Par programme définir la largeur et la hauteur de la GridView Et ImageView

J'ai vu tant de questions quant à la façon de définir la hauteur et la largeur d'un ImageView, et un GridView séparément. Ici, ici et ici pour commencer

Mais, je me demande comment définissez à la fois.

Voici mon installation. Dans mon GridView, j'ai une ImageView et un TextView. J'ai quelques images de différentes largeurs et de tailles, ce qui je veux la redimensionner pour toujours être à 1/3 de la taille de l'écran carré. En dessous, j'ai un texte de description.

Voici le code que j'ai jusqu'à présent...

gallerygridview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/bg_light_blue"
    android:orientation="vertical" >

        <GridView
            android:id="@+id/gridGallery"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:numColumns="3"
            android:padding="0dp"
            android:verticalSpacing="4dp" >
        </GridView>

        <ImageView
            android:id="@+id/imgNoMedia"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/app_name"
            />

        <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textSize="12sp"
           android:textStyle="bold"
           android:typeface="sans"
           android:layout_below="@+id/imageView1"
           android:layout_marginTop="2dp"
           android:layout_centerHorizontal="true"
           android:textColorHighlight="#000000"
           android:gravity="center"
         />
</LinearLayout>

Dans mon Activité...

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gallerygridview);

     GridView gridView = (GridView) findViewById(R.id.gridGallery);

     m_adapter = new PhotoImageAdapter(getBaseContext(),m_images);
     gridView.setAdapter(m_adapter); //uses the view to get the context instead of getActivity().
     registerForContextMenu(gridView);


 }

Et dans ma classe d'Adaptateur...

public View getView(int position, View convertView, ViewGroup parent) {

   View view = convertView;
   Holder holder=new Holder();

         if (view == null) {
             LayoutInflater inflater = LayoutInflater.from(mContext);
                view = inflater.inflate(R.layout.gallerygridview, parent, false);


            holder.img = new ImageView(mContext);
            holder.img = (ImageView) view.findViewById(R.id.imgNoMedia);
            holder.tv = (TextView) view.findViewById(R.id.textView1);


            int iDisplayWidth = mContext.getResources().getDisplayMetrics().widthPixels ;
            int iImageWidth = (iDisplayWidth / 3)-15 ; 
            GridView.LayoutParams glp = (GridView.LayoutParams) view.getLayoutParams();
            glp.width = iImageWidth;
            glp.height = iImageWidth ;
            view.setLayoutParams(glp);

            view.setTag(holder);

        } else {
            holder = (Holder) view.getTag();
        }

        holder.tv.setText(m_images.get(position).key);
        holder.img.setImageURI(Uri.parse(m_images.get(position).value));

    return view;
  }

Pour l'instant, le contrôle GridView est exactement de 1/3ème de la taille de l'écran. Et l'image et le texte à afficher. Mais je voudrais l'ImageView pour remplir l'espace restant à l'intérieur de la GridView cellule.

Voici ce que je voudrais...

Par programme définir la largeur et la hauteur de la GridView Et ImageView

Mais c'est à quoi il ressemble...

Par programme définir la largeur et la hauteur de la GridView Et ImageView

Ce que je fais mal? Et, Comment puis-je définir par programmation à la fois la hauteur de la GridView, Et l'ImageView à l'intérieur?

Merci à l'avance.

InformationsquelleAutor wizurd | 2014-08-12