Hi Ken,

It seems that the grid does not behave well if WRAP_LAYOUT or FILL_PARENT
are used inside the cell's layout.

I changed the following code :

addView(icon, new
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
                       this.icon.setImageBitmap(getBitmap(urlString));

               this.name = new TextView(context);
                       addView(this.name, new
LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));

to:

addView(icon, new
LinearLayout.LayoutParams(50,50));
                       this.icon.setImageBitmap(getBitmap(urlString));

               this.name = new TextView(context);
                       addView(this.name, new
LinearLayout.LayoutParams(50,50));


and then your grid works fine. You may want to log a bug in the issue
tracker about the grid getting distorted by using the WRAP_LAYOUT and
FILL_LAYOUT.

Thanks,
Megha
On Sat, Mar 29, 2008 at 1:06 AM, Ken <[EMAIL PROTECTED]> wrote:

>
> Could someone help? Thanks!
>
> Ken
>
>
> On Mar 25, 10:22 pm, Ken <[EMAIL PROTECTED]> wrote:
> > Oops .... I've attached the Icon class below. Initially the grid is
> > aligned at the top, but if you move around using the DPAD, the grid
> > seems to be aligned at the bottom. But since the total height of the
> > icon+text is different (we have both the one-line text like iconxxx
> > and two-line text like iconxxxxxx), the grid is messed up ....
> >
> > Ken
> >
> > ----- Icon.java -----
> > package com.test.threadtest;
> >
> > public class Icon {
> >         public String name;
> >         public String iconUrl;
> >
> >         public Icon() {
> >                 name = "";
> >                 iconUrl = "";
> >         }
> >
> > }
> >
> > On Mar 25, 4:56 am, "Megha Joshi" <[EMAIL PROTECTED]> wrote:
> >
> > > Hi,
> >
> > > I tried to run your code to see what you mean by alignment is messed
> up, but
> > > the code for Icon class is missing.
> > > Can you give more details on what exactly is going wrong?
> >
> > > Thanks,
> > > Megha
> >
> > > On Sun, Mar 23, 2008 at 8:17 PM, Ken <[EMAIL PROTECTED]> wrote:
> >
> > > > Hi there,
> >
> > > > Please take a look at:
> > > >http://kombadil.willflow.com/misbehaving_grid/
> >
> > > > The grid starts out OK, but if you move around, the alignment is
> > > > messed up. Any suggestions?
> >
> > > > Thanks!
> >
> > > > Ken
> >
> > > > P.S. I've attached the code below:
> >
> > > > ----- main.xml -----
> > > > <?xml version="1.0" encoding="utf-8"?>
> >
> > > > <GridView xmlns:android="http://schemas.android.com/apk/res/android";
> > > >        android:id="@+id/launch_grid"
> > > >        android:layout_width="fill_parent"
> > > >        android:layout_height="fill_parent"
> > > >    android:padding="10dip"
> > > >    android:verticalSpacing="10"
> > > >    android:horizontalSpacing="10"
> > > >    android:numColumns="auto_fit"
> > > >    android:columnWidth="60"
> > > >    android:stretchMode="columnWidth"
> >
> > > >    android:gravity="center"
> > > > />
> >
> > > > ----- ThreadTest.java -----
> > > > package com.test.threadtest;
> >
> > > > import java.io.BufferedInputStream;
> > > > import java.io.InputStream;
> > > > import java.net.HttpURLConnection;
> > > > import java.net.URL;
> > > > import java.util.ArrayList;
> > > > import java.util.List;
> >
> > > > import android.app.Activity;
> > > > import android.content.Context;
> > > > import android.content.Intent;
> > > > import android.graphics.Bitmap;
> > > > import android.graphics.BitmapFactory;
> > > > import android.os.Bundle;
> > > > import android.os.Handler;
> > > > import android.util.Log;
> > > > import android.view.View;
> > > > import android.view.ViewGroup;
> > > > import android.widget.AdapterView;
> > > > import android.widget.BaseAdapter;
> > > > import android.widget.GridView;
> > > > import android.widget.ImageView;
> > > > import android.widget.LinearLayout;
> > > > import android.widget.TextView;
> > > > import android.widget.AdapterView.OnItemClickListener;
> >
> > > > public class ThreadTest extends Activity {
> > > >        private List<Icon> icons;
> > > >        private GridView launchView;
> > > >        private IconListAdapter iconListAdapter;
> >
> > > >        @Override
> > > >    public void onCreate(Bundle icicle) {
> > > >        super.onCreate(icicle);
> > > >        setContentView(R.layout.main);
> > > >        final Handler mHandler = new Handler();
> > > >        icons = new ArrayList<Icon>();
> >
> > > >        Thread t = new Thread() {
> > > >                        public void run() {
> > > >                                perform();
> > > >                                mHandler.post(mUpdate);
> > > >                        }
> > > >                };
> >
> > > >                t.start();
> > > >    }
> >
> > > >    protected void perform() {
> > > >        ServerHandler serverHandler = new ServerHandler();
> > > >        icons = serverHandler.getIcons();
> > > >        iconListAdapter = new IconListAdapter(this, icons);
> >
> > > >        }
> >
> > > >    final Runnable mUpdate = new Runnable() {
> > > >        public void run() {
> > > >                launchView = (GridView) findViewById(R.id.launch_grid
> );
> > > >                launchView.setAdapter(iconListAdapter);
> > > >                launchView.setOnItemClickListener(new
> OnItemClickListener()
> > > > {
> > > >                        public void onItemClick(AdapterView parent,
> View v,
> > > > int
> > > > position, long id) {
> > > >                                Intent i = new Intent(ThreadTest.this
> ,
> > > > ThreadTest.class);
> > > >                                startActivity(i);
> > > >                        }
> > > >                });
> >
> > > >        }
> > > >    };
> >
> > > >    public class IconListAdapter extends BaseAdapter {
> > > >        private Context ctx;
> > > >        private List<Icon> icons;
> >
> > > >                public IconListAdapter(Context ctx, List<Icon> icons)
> {
> > > >                        this.ctx = ctx;
> > > >                        this.icons = icons;
> > > >        }
> >
> > > >        public View getView(int position, View convertView, ViewGroup
> > > > parent) {
> > > >                Icon app = icons.get(position);
> > > >                ApplicationView av = new ApplicationView(ctx,
> app.name,
> > > > app.iconUrl);
> > > >                return av;
> > > >        }
> >
> > > >        public final int getCount() {
> > > >            return icons.size();
> > > >        }
> >
> > > >        public final Object getItem(int position) {
> > > >            return icons.get(position);
> > > >        }
> >
> > > >        public final long getItemId(int position) {
> > > >            return position;
> > > >        }
> > > >    }
> >
> > > >    public static Bitmap getBitmap(String urlString) {
> > > >                Bitmap bm = null;
> >
> > > >                if (urlString.startsWith("http")) {
> > > >                        try {
> > > >                                URL url = new URL(urlString);
> > > >                                HttpURLConnection conn =
> > > > (HttpURLConnection)
> > > > url.openConnection();
> > > >                                conn.connect();
> > > >                                InputStream is = conn.getInputStream
> ();
> > > >                                BufferedInputStream bis = new
> > > > BufferedInputStream(is);
> > > >                                bm = BitmapFactory.decodeStream(bis);
> > > >                                conn.disconnect();
> > > >                                is.close();
> > > >                                bis.close();
> > > >                        } catch (Exception e) {
> > > >                                Log.e("error", e.toString());
> > > >                                bm = null;
> > > >                        }
> > > >                }
> >
> > > >                return bm;
> > > >        }
> >
> > > >        public class ApplicationView extends LinearLayout {
> > > >                private TextView name;
> > > >                private ImageView icon;
> >
> > > >                public ApplicationView(Context context, String name,
> String
> > > > urlString) {
> > > >                        super(context);
> > > >                        this.setOrientation(VERTICAL);
> >
> > > >                        this.icon = new ImageView(context);
> > > >                        addView(icon, new
> > > > LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
> > > > LayoutParams.WRAP_CONTENT));
> > > >                        this.icon.setImageBitmap
> (getBitmap(urlString));
> >
> > > >                this.name = new TextView(context);
> > > >                        addView(this.name, new
> > > > LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
> > > > LayoutParams.WRAP_CONTENT));
> > > >                        this.name.setText(name);
> > > >                }
> > > >        }
> > > > }
> >
> > > > ----- ServerHandler.java -----
> > > > package com.test.threadtest;
> >
> > > > import java.util.ArrayList;
> > > > import java.util.List;
> >
> > > > import android.util.Log;
> >
> > > > public class ServerHandler {
> > > >        public List<Icon> getIcons() {
> > > >                final List<Icon> icons = new ArrayList<Icon>();
> >
> > > >                String name = "icon";
> >
> > > >                for(int i=0; i<10; i++) {
> > > >                        Icon icon = new Icon();
> > > >                        icon.name = name;
> > > >                        name += "xxx";
> > > >                        icon.iconUrl = "
> > > >http://code.google.com/android/images/
> > > > logo_android.gif <
> http://code.google.com/android/images/logo_android.gif>
> > > > ";
> > > >                        icons.add(icon);
> > > >                }
> >
> > > >                // Sleep code
> > > >                // Comment this section out and the code would work.
> > > >                // In reality it is a piece of code that talks to a
> server.
> > > > //              try {
> > > > //                      Log.e("test", "enter");
> > > > //                      Thread.sleep(1000);
> > > > //                      Log.e("test", "leave");
> > > > //              } catch (InterruptedException e) {
> > > > //                      e.printStackTrace();
> > > > //              }
> >
> > > >                return icons;
> > > >        }
> > > > }
> >
>

--~--~---------~--~----~------------~-------~--~----~
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]
Announcing the new M5 SDK!
http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to