Вы можете сделать это с помощью LinearLayouts, но вам понадобятся три вложенных макета:
- Вертикальный LinearLayout, содержащий все.
- Горизонтальная линейная планировка, содержащая все, кроме заголовка.
- Вертикальный LinearLayout, содержащий не заголовочные TextViews.
Внутреннему вертикальному LinearLayout, вероятно, понадобится android:layout_weight="1"
, поэтому он растягивается, чтобы заполнить доступное пространство, но не сжимает правый ImageView.
Это все очень дорого, особенно если умножить на многочисленные представления в ListView. RelativeLayout может сделать это только с одним макетом.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dip" >
<TextView
android:id="@+id/textView1"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:textSize="40sp">
</TextView>
<ImageView
android:id="@+id/imageView1"
android:layout_below="@+id/textView1"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon" >
</ImageView>
<ImageView
android:id="@+id/imageView2"
android:layout_below="@+id/textView1"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon" >
</ImageView>
<TextView
android:id="@+id/textView2"
android:layout_below="@+id/textView1"
android:layout_toRightOf="@+id/imageView1"
android:layout_toLeftOf="@+id/imageView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="TextView" >
</TextView>
<TextView
android:id="@+id/textView3"
android:layout_below="@+id/textView2"
android:layout_toRightOf="@+id/imageView1"
android:layout_toLeftOf="@+id/imageView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="TextView" >
</TextView>
<TextView
android:id="@+id/textView4"
android:layout_below="@+id/textView3"
android:layout_toRightOf="@+id/imageView1"
android:layout_toLeftOf="@+id/imageView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="TextView" >
</TextView>
</RelativeLayout>
Отредактировано для форматирования и добавления :
Это результат. Конечно, размеры текста и изображения нужно корректировать, но основной результат - это то, что вы описали.