单行到fill_parent ListView高度

A-L*_*ive 4 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>
Run Code Online (Sandbox Code Playgroud)

而适配器的getView是

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

Bu显示的行与它的显示方式相同android:layout_height="wrap_content".

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

我错过了重要的事情吗?

Čik*_*nad 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>   
Run Code Online (Sandbox Code Playgroud)

行布局:

<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>
Run Code Online (Sandbox Code Playgroud)

然后在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());
Run Code Online (Sandbox Code Playgroud)

我想是的.心连心

  • 谢谢,`getMeasuredHeight`是一种最小化硬编码的好方法,虽然我不确定在listView大小调整期间是否为显示的行调用`getView`. (3认同)