Расположение Android с двумя изображениями, оставляющими пробелы внизу

79
10

Я пытаюсь создать макет, который всегда будет отображать 2 изображения, разделяя длину экрана одинаково на половину, не оставляя пробелов на экране (даже если изображения обрезаны в центре).

Пока у меня есть следующий код, но это оставляет много пустого пространства в нижней части экрана. Причина, по которой я использую "RelativeLayout" в "LinearLayout", заключается в том, что я хочу, чтобы мое представление text1 попало в нижнюю часть моего изображения 1 (перекрывая изображение1).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="230dp"
android:layout_marginBottom="3dp" >

<ImageView
android:id="@+id/img1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:contentDescription="@string/picture"
android:scaleType="centerCrop" />

<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center"
android:padding="5dp"
android:textColor="#fff" />

</RelativeLayout>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="230dp"
android:layout_marginBottom="3dp" >

<ImageView
android:id="@+id/img2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:contentDescription="@string/picture"
android:scaleType="centerCrop" />

</RelativeLayout>

спросил(а) 2014-02-02T06:57:00+04:00 6 лет назад
1
Решение
61

Вы жестко кодируете высоту до 230dp для каждого макета, который может вызвать проблему. В линейном макете вы должны использовать весы для равномерного распределения площади экрана.

Использовать android: layout_weight = "1" как в относительных макетах

Подробнее здесь.

Android: 2 относительных расположения разделены на половину экрана

ответил(а) 2014-02-02T07:03:00+04:00 6 лет назад
50

Макет, который вы описываете, представляет собой простой, взвешенный LinearLayout. Просто добавьте в свой LinearLayout следующий атрибут:

android:weightSum="2"

Затем для каждого RelativeLayout измените атрибут height на:

android:layout_height="0px"

И добавьте следующий атрибут к тому же RelativeLayout s:

android:layout_weight="1"

ответил(а) 2014-02-02T07:31:00+04:00 6 лет назад
35

попробуйте использовать компоновку фреймов, если вы хотите совместить текстовое изображение с изображением и использовать макет макета на макете кадра

Пример кода для макета xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="3dp"
android:layout_weight="0.5" >

<ImageView
android:id="@+id/img1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:scaleType="centerCrop" />

<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Test"
android:gravity="center"
android:layout_gravity="center_vertical|bottom"
android:padding="5dp"
android:textColor="@android:color/black" />
</FrameLayout>

<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="3dp"
android:layout_weight="0.5" >

<ImageView
android:id="@+id/img2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:scaleType="centerCrop" />
</FrameLayout>

ответил(а) 2014-02-02T07:46:00+04:00 6 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема