Android: макет с match_parent займет пространство слева или

78
6

У меня есть горизонтальная линейная компоновка, содержащая два макета. Я хочу, чтобы правильный макет был таким же широким, как содержимое (wrap_content). Левый макет должен заполнить оставшееся пространство.

Я попробовал "match_parent" в левом макете (Relative Layout) и "wrap_content" на правильном макете (Linear Layout), но левая макет занимает все пространство.

Как я могу решить эту проблему, что левый макет просто занимает пространство, которое остается, а не все. Подобно тому, как разрешить правильную компоновку сначала занять свое место.

EDIT :: Извините, я хотел опубликовать картинку, но не смог, вот код:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:measureWithLargestChild="false">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00ff27"
android:layout_gravity="bottom">
</RelativeLayout>

<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:baselineAligned="false"
android:layout_alignParentStart="true">

<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentStart="true" />
</LinearLayout>

Относительная компоновка слева занимает ВСЕ пространство (экран становится зеленым). Я хочу, чтобы Relative Layout принимала ширину, которая остается от LinearLayout, поэтому вы можете видеть кнопку в макете.

спросил(а) 2021-01-19T16:48:23+03:00 8 месяцев назад
1
Решение
111

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:orientation="horizontal">

<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="#00ff27"></RelativeLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical">

<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="New Button" />
</LinearLayout>
</LinearLayout>

ответил(а) 2021-01-19T16:48:23+03:00 8 месяцев назад
46

Android отображает представления в том порядке, в котором они отображаются в файле макета. Таким образом, ваш первый вид заполняет все доступное пространство, прежде чем второе представление имеет шанс заняться любым пространством. Одним из способов решения этой проблемы является создание корневой компоновки RelativeLayout вместо LinearLayout, позволяющей сначала поставить правую сторону. Другой вариант - оставить корень LinearLayout и использовать атрибут layout_weight. На вашем первом представлении вместо android:layout_width="match_parent", попробуйте android:layout_width="0dp" и android:layout_weight="1"

ответил(а) 2021-01-19T16:48:23+03:00 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

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