单行到fill_parent ListView高度

时间:2012-10-25 14:03:02

标签: android android-listview

listView中有一行我希望与listView具有相同的高度(让我们说它是全屏)。

行布局看起来像

<?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="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/error" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:minHeight="30dip"
        android:textAppearance="?android:attr/textAppearanceMedium"/>
</RelativeLayout>

适配器的getView是

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   View row = inflater.inflate(R.layout.myrow, parent, false);
   return row;
}

Bu显示的行与android:layout_height="wrap_content"的行相同。

布局预览显示填充它的父级的行,我正在使用inflate(R.layout.myrow, parent, false);,listView肯定是全屏显示的,行只有图像+ textView一样高。

我错过了重要的事情吗?

3 个答案:

答案 0 :(得分:5)

我有类似的问题,我想我已经解决了,所以在这里报道。

我的ListView中有更多行,但我希望行高与listview相同,而listview又占用了布局的所有剩余空间。我的行只由一个ImageView组成。我遇到以下问题:

- 我想让较小的图像扩展以占据所有空间 - 较大的图像不得超过行高

如果我发现任何错误,请在此处留言。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.9"
    android:gravity="center"
    android:orientation="vertical">
    <ListView 
        android:id="@id/lay_main_firma_objekti"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center">
    </ListView>      
</LinearLayout>   

行布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center">       
  <TextView
      android:id="@+id/xx"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>  
    <ImageView              
        android:id="@id/imageView_obj"
        android:contentDescription="@string/objektDesc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignLeft="@id/xx"
        android:layout_alignTop="@id/xx"
        android:layout_alignRight="@id/xx"
        android:layout_alignBottom="@id/xx"
        android:scaleType="fitXY"
        android:src="@drawable/custom_prazno" />                    
</RelativeLayout>

然后在Adapter getView中,重要的是

convertView.setMinimumHeight(parent.getMeasuredHeight());
ImageView slika=(ImageView)v.findViewById(R.id.imageView_obj);    
slika.setMinimumHeight(parent.getMeasuredHeight());
TextView xx=(TextView)v.findViewById(R.id.xx);
xx.setHeight(parent.getMeasuredHeight());

我认为是。 HTH

答案 1 :(得分:3)

只是想知道为什么你想要一个只包含一行的ListView的特殊原因?而不是直接使用RelativeLayout而不是ListView?

答案 2 :(得分:0)

我最终用硬编码行高。在设置了minimumHeight之后,相对布局存在问题,因此我也将其替换为具有居中重力的LinearLayout。

请让我知道是否有更好的解决方案让Android能够完成这项工作并最大限度地减少硬编码。