在ListView项中,RelativeLayout子项不扩展以填充可用空间

时间:2014-05-16 19:24:58

标签: android android-layout android-listview relativelayout

ListView项目中,我想要做的是将ImageView放在TextView上,而TextView必须填写它的父母,这里是我做的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">    

    <TextView android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:background="#FFFF00" />

    <ImageView android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:background="#550000FF" />    
</RelativeLayout>

注释:

  • 尝试将{android:layout_alignParentBottom =&#34; true&#34;}添加到TextView - 没有任何更改
  • 尝试使用&#34; fill_parent&#34;而不是&#34; match_parent&#34; - 没有改变
  • 试图添加&#34; android:singleLine =&#34; false&#34;&#34; - 没有改变
  • 必须修复ImageView高度,但我无法为TextView执行此操作。
  • 当TextView包含足够的文本使其高于图像
  • 时,没有问题

here is a screenshot: 注意TextView的表现就像它给出的那样&#34; wrap_content&#34;虽然它应该填满所有的空白区域。

所以我在这里错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

TextView高度设置为与ImageView相同,因为您对Relative Layout项目布局使用ListView,项目高度将是其内部子项的最大高度。

Textview更改为

<TextView android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_alignParentTop="true"
    android:background="#FFFF00" />

如果ImageView高度未修复,则可以从适配器TextView方法设置getView高度

  textview.setHeight(parent.getMeasuredHeight());

此外,为android:layout_height="match_parent"ListView设置parent Layout没有任何意义,请将其更改为wrap_content

答案 1 :(得分:0)

将父级布局高度更改为wrap_content,即可解决您的问题

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<TextView android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:background="#FFFF00" />

<ImageView android:id="@+id/icon"
    android:layout_width="50dp"
    android:layout_height="100dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:background="#550000FF" />
</RelativeLayout>

或 您可以将minHeight=100设置为TextView。这将占用与ImageView相同的最小高度100dp,并在最小高度之后增加其高度。

<TextView android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minHeight="100dp"
    android:layout_alignParentTop="true"
    android:background="#FFFF00" />