ListView 中的相对布局

Ralative Layout inside ListView

我有以下 Relativelayout,其中包含带有标签的 Linearlayout。此 Relativelayout 推送到自定义适配器中的自定义 ListView。我希望能一一看到 Relativelayouts,但得到了 this

<?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="wrap_content"
    android:minWidth="25px"
    android:minHeight="25px"
    android:padding="8sp">
  <LinearLayout
      android:orientation="vertical"
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
    <TextView
        android:text="Водомер 1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="4sp"
        android:layout_toRightOf="@id/linearLayout1"
    <TextView
        android:text="Последняя поверка:"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/linearLayout1"
    <TextView
        android:text="Последние показания:"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/linearLayout1"
    <TextView
        android:text="Текущие показания:"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/linearLayout1"
  </LinearLayout>
  <ImageView
      android:src="@android:drawable/ic_menu_gallery"
      android:layout_width="76sp"
      android:layout_height="76sp"
      android:paddingRight="13sp"
      android:layout_alignParentRight="true"
</RelativeLayout>

目标布局看起来是这样的。如果我为这个 ListView 设置任何其他自定义视图,它看起来很好。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:columnCount="1"
    app:rowCount="7">
    <TextView
        android:text="Список водомеров"
        android:layout_width="match_parent"
        app:layout_rowWeight="0.05"
        android:gravity="center_horizontal"/>
    <ListView
        android:minWidth="25px"
        android:minHeight="25px"
        app:layout_rowWeight="0.3"
        android:layout_width="match_parent"
        android:choiceMode="singleChoice" />
    <TextView
        android:text="Введите показания водомера"
        app:layout_rowWeight="0.02"
        android:layout_width="match_parent"
        android:gravity="center" />
    <EditText
        android:inputType="number"
        app:layout_rowWeight="0.04"
        android:layout_width="match_parent"/>
    <Button
        android:text="Сделать фото"
        android:textSize="20dp"
        app:layout_rowWeight="0.02"
        android:layout_width="match_parent"
        android:gravity="center"/>
    <Button
        android:text="Отправить показания"
        android:textSize="24dp"
        app:layout_rowWeight="0.15"
        android:layout_width="match_parent"
        android:gravity="center"/>
    <Space
        app:layout_rowWeight="0.3" />
</android.support.v7.widget.GridLayout>

我该如何解决这个问题?

设置TextView在列表上方的高度为wrap_content

为了解决我的问题,我使用了 LQ Gioan 的建议,并用 weightSum 属性 将目标 GridLayout 替换为 LinearLayout。在我使用的内容元素中 layout_weight 属性.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="100">
<TextView
        android:text="Список водомеров"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_weight="11"
        android:id="@+id/textView1" />