Seems that you might be able to use a textview to display both the image and the text. Refer the TextView's API documentation and look for 'android:drawableTop' attribute which you might use to specify the image on top of the text
On Sep 26, 5:34 pm, Jacob <[email protected]> wrote: > My application was supposed to be easy way to learn how to do android > programming but this has me stuck. The images I am grabbing are mostly > different sizes so only some of the images are overlapping the > TextView. I have tried settinga Maxheight but this only works when the > screen is in vertical orientation but not when changed to horizontal. > Here is the code: > //main.xml > <?xml version="1.0" encoding="utf-8"?> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > android" > android:id="@+id/screen" > android:orientation="vertical" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > > > <android.gesture.GestureOverlayView > android:id="@+id/gestures" > android:layout_width="fill_parent" > android:layout_height="0dip" > android:layout_weight="1.0" > > > <LinearLayout > android:id="@+id/screen" > android:orientation="horizontal" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > > > <TextView > android:id="@+id/title" > android:layout_width="wrap_content" > android:layout_height="40px" > android:text="" > android:paddingBottom="10px" > android:layout_weight="1.0" > /> > <EditText > android:id="@+id/number" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:inputType="number" > android:text="" > /> > </LinearLayout> > <ImageView > android:id="@+id/picview" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:cropToPadding="true" > android:layout_gravity="bottom" > /> > > </android.gesture.GestureOverlayView> > > </LinearLayout> > > JavaFile > package com.xkcd; > import java.io.BufferedReader; > import java.io.IOException; > import java.io.InputStream; > import java.io.InputStreamReader; > import java.net.MalformedURLException; > import java.net.URL; > import java.util.ArrayList; > > import android.app.Activity; > import android.app.AlertDialog; > import android.app.Dialog; > import android.app.ProgressDialog; > import android.content.Context; > import android.content.DialogInterface; > import android.content.res.Configuration; > import android.gesture.Gesture; > import android.gesture.GestureLibraries; > import android.gesture.GestureLibrary; > import android.gesture.GestureOverlayView; > import android.gesture.Prediction; > import android.gesture.GestureOverlayView.OnGesturePerformedListener; > import android.graphics.Bitmap; > import android.graphics.BitmapFactory; > import android.os.Bundle; > import android.os.Handler; > import android.os.Message; > import android.text.Editable; > import android.text.method.KeyListener; > import android.util.Log; > import android.view.Display; > import android.view.KeyEvent; > import android.view.View; > import android.view.ViewGroup; > import android.view.WindowManager; > import android.view.View.OnClickListener; > import android.widget.ImageView; > import android.widget.LinearLayout; > import android.widget.PopupWindow; > import android.widget.TextView; > import android.widget.Toast; > > import org.json.simple.JSONObject; > import org.json.simple.parser.JSONParser; > > public class xkcd extends Activity { > private URL u; > private URL imageURL; > private InputStream is; > private String s; > private JSONObject json; > private BufferedReader reader; > private ImageView picView; > private TextView title; > private TextView number; > private GestureOverlayView gestures; > private GestureLibrary gLib; > private int maxComic; > > public void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > setContentView(R.layout.main); > gLib = GestureLibraries.fromRawResource(this, R.raw.gestures); > json = new JSONObject(); > final String TAG = "com.hascode.android.gesture"; > if (!gLib.load()) { > Log.w(TAG, "could not load gesture library"); > finish(); > } > title = (TextView) findViewById(R.id.title); > number= (TextView) findViewById(R.id.number); > number.setKeyListener(new KeyListener(){ > > @Override > public void clearMetaKeyState(View arg0, Editable > arg1, int arg2) { > // TODO Auto-generated method stub > > } > > @Override > public int getInputType() { > // TODO Auto-generated method stub > return 0; > } > > @Override > public boolean onKeyDown(View view, Editable text, > int keyCode, > KeyEvent event) { > // TODO Auto-generated method stub > return false; > } > > @Override > public boolean onKeyOther(View view, Editable text, > KeyEvent event) > { > // TODO Auto-generated method stub > return false; > } > > @Override > public boolean onKeyUp(View view, Editable text, int > keyCode, > KeyEvent event) { > // TODO Auto-generated method stub > if(event.getKeyCode() == 66){ > > createURL(Integer.parseInt(number.getText().toString())); > } > return false; > } > > }); > picView = (ImageView) findViewById(R.id.picview); > picView.setAdjustViewBounds(true); > Display display = getWindowManager().getDefaultDisplay(); > int width = display.getWidth(); > int height = display.getHeight(); > picView.setMaxHeight(height-100); > picView.setOnClickListener(new OnClickListener(){ > @Override > public void onClick(View v) { > // TODO Auto-generated method stub > displayHover(); > } > }); > gestures = (GestureOverlayView) findViewById(R.id.gestures); > gestures.addOnGesturePerformedListener(handleGestureListener); > launch(); > } > > public void createURL(int number){ > String prefix = "http://xkcd.com/"; > String suffix = "/info.0.json"; > URL jsonURL; > String stringURL = prefix + number + suffix; > try { > jsonURL = new URL(stringURL); > createJSON(jsonURL); > } catch (MalformedURLException e) { > e.printStackTrace(); > } > } > > public void displayHover(){ > AlertDialog alertDialog = new > AlertDialog.Builder(this).create(); > alertDialog.setMessage(json.get("alt").toString()); > alertDialog.setButton("OK", new > DialogInterface.OnClickListener() { > public void onClick(DialogInterface dialog, int which) { > return; > } }); > alertDialog.show(); > } > > public void createJSON(URL url){ > try { > is = url.openStream(); > reader = new BufferedReader(new InputStreamReader(is, > "UTF-8")); > s = reader.readLine(); > is.close(); > reader.close(); > json = (JSONObject)new JSONParser().parse(s); > displayComic(); > } catch (Exception e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > > public void displayComic(){ > //Set the title of the app to the title of the comic and its > number > String comicTitle= (String)json.get("title") + " (Comic# " + > json.get("num") + ")"; > title.setText(comicTitle); > number.setText(json.get("num").toString()); > try { > imageURL= new URL ((String) json.get("img")); > picView.setImageBitmap(getImage(imageURL)); > > } catch (MalformedURLException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > } > > private Bitmap getImage(URL url){ > Bitmap bitmap = null; > InputStream in = null; > try { > in=url.openStream(); > bitmap = BitmapFactory.decodeStream(in); > in.close(); > } catch (IOException e1) { > // TODO Auto-generated catch block > e1.printStackTrace(); > } > return bitmap; > } > > public void launch(){ > //By default get the most recent XKCD comic > try { > u = new URL("http://xkcd.com/info.0.json"); > } catch (MalformedURLException e) { > e.printStackTrace(); > } > //Using the JSON string from the URL, create a JSON > object from 3rd > party code. > createJSON(u); > > maxComic=Integer.parseInt(json.get("num").toString()); > } > > private OnGesturePerformedListener handleGestureListener = new > OnGesturePerformedListener() { > @Override > public void onGesturePerformed(GestureOverlayView > gestureView,Gesture gesture) { > ArrayList<Prediction> predictions = > gLib.recognize(gesture); > // one prediction needed > if (predictions.size() > 0) { > Prediction prediction = predictions.get(0); > // checking prediction > if (prediction.score > 1.0) { > String action= prediction.name; > ComicThread newComic; > if (action.equals("Left")){ > > if(Integer.parseInt(json.get("num").toString())==1){ > newComic= new > ComicThread(maxComic); > newComic.start(); > }else > newComic= new > ComicThread((Integer.parseInt(json.get("num").toString())-1)); > newComic.start(); > } > if (action.equals("Right")){ > > if(Integer.parseInt(json.get("num").toString())==maxComic){ > newComic= new > ComicThread(1); > newComic.start(); > }else > newComic= new > ComicThread((Integer.parseInt(json.get("num").toString())+1)); > newComic.start(); > } > } > } > } > }; > > private class ComicThread extends Thread{ > int number; > ProgressDialog dialog; > > public ComicThread(int number){ > this.number=number; > dialog= ProgressDialog.show(xkcd.this, "","Loading > Comic #" +number > + ". Please wait...", true); > } > > public void run(){ > handler.sendEmptyMessage(0); > } > > private Handler handler = new Handler() { > @Override > public void handleMessage(Message msg) { > createURL(number); > dialog.dismiss(); > } > }; > } > > > > } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

