Android ListView fixe la hauteur de l'élément de

Eu un petit problème. J'aimerais créer un android affichage de la liste de l'activité avec tous les éléments de la liste ayant une hauteur fixe.

Donc, de mon point de mise en page (thread_item.xml ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="300dip"
        >
    <TextView android:id="@+id/thread_item_title"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="[dummy]"
              android:textSize="20dip"
              android:textStyle="bold"
            />
    <ImageView android:id="@+id/thread_first_image"
               android:layout_below="@id/thread_item_title"
               android:scaleType="centerInside"
               android:maxWidth="100dip"
               android:maxHeight="100dip"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:adjustViewBounds="true" />
    <TextView
            android:id="@+id/thread_item_preview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/thread_first_image"
            android:text="[dummy]"
            android:textSize="15dip">
    </TextView>
</RelativeLayout>

J'ai mis layout_height de l'élément racine 300dip et attendons de tous les éléments ont la même hauteur, mais ils ne le font pas. Quand je lance l'application, il ressemble à la hauteur d'avoir un wrap_content valeur.

En outre, l'activité en elle-même ressemble à ceci:

public class ThreadListActivity extends ListActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        /*
         Code to get items from the storage.
        */

        setListAdapter(new ThreadItemAdapter(this, R.layout.thread_item, itemsArray)));


        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                /*Start new Activity. Unrelated stuff.*/
            }
        });
    }
}

Et adaptable, je suis en utilisant ressemble à ceci:

public class ThreadItemAdapter extends ArrayAdapter<ThreadItem> {

    Activity context;
    List<ThreadItem> items;

    public ThreadItemAdapter(Activity context, int textViewResourceId, List<ThreadItem> items) {
        super(context, textViewResourceId, items);
        this.context = context;
        this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inf = this.context.getLayoutInflater();
        View result;
        if (convertView == null) {
            result = inf.inflate(R.layout.thread_item, null);
        } else {
            result = convertView;
        }

        TextView tbTitle = (TextView) result.findViewById(R.id.thread_item_title);
        TextView tbPreview = (TextView) result.findViewById(R.id.thread_item_preview);
        ImageView ivFirstImage = (ImageView) result.findViewById(R.id.thread_first_image);

        ThreadItem item = items.get(position);

        tbTitle.setText(item.getThreadTitle());
        ivFirstImage.setImageBitmap(item.getFirstImage());

        SimpleLeadingMarginSpan span = new SimpleLeadingMarginSpan(item.getFirstImage() != null ? 5 : 0, 115); //TODO: const
        SpannableString previewText = new SpannableString(item.getThreadPreview());
        previewText.setSpan(span, 0, previewText.length(), 0);
        tbPreview.setText(previewText);

        return result;
    }
}

Je ne vois pas pourquoi tous les éléments de la liste toujours envelopper leur contenu et ne pas rester 300dip en hauteur. Ils peuvent être à la fois plus petits ou plus grands, alors 300dip.
Je suis sous android 2.3.3, les essais sur le HTC Evo 3D de l'appareil et un émulateur (montrent le même résultat).

Merci beaucoup à l'avance.

UPD:

Merci à Miguel et Sam. La solution est de mettre maxHeight pour le textView, ce qui rend mon élément de la liste de croître (qui serait +id/thread_item_preview) et le réglage de la RelativeLayout de minHeight à 300dip ainsi, pour l'empêcher de se réduire.

Si nous avons défini la hauteur min et max de la hauteur pour être le même qu'y aurait-il lorsque la taille du texte dans la liste d'affichage est supérieure à la hauteur?

OriginalL'auteur Dmitriy | 2012-04-30