Intereting Posts
Android 5.0 – Добавление заголовка / нижнего колонтитула в RecyclerView Как сделать границу выделения, которая отслеживает установленный переключатель? Исключение, возникающее при рендеринге: двоичная строка XML-строки # -1, раздувающий класс Не удалось выполнить: com.android.support:appcompat-v7:26.0.0 Избегайте перезапуска приложения при открытии аппаратной клавиатуры Есть ли способ, чтобы элементы пользовательского интерфейса слегка перекрывались (один поверх другого) без использования абсолютных макетов? Вам нужно добавить значок в APK при загрузке приложения в Google Play Проблемы, связанные с редактированием типа ввода текста Ошибка Unparsed Aapt Что такое (D / NSD: curPkgName отсутствует в списке)? Добавить параметры запроса в запрос GET в okhttp в Android Повторная установка броска исключения IllegalArgumentException для асинхронного вызова DELETE FormUrlEncoded Горизонтальный RecyclerView внутри ListView не прокручивается очень плавно Android ADB – не может быть распознан LG G Pad (VK810) Добавление пользовательского шрифта android с помощью lib

Как сделать линейное заполнение оставшегося пространства в режиме релятивирования?

У меня есть relativelayout с тремя linearlayouts как дети. Последний имеет фиксированную высоту и имеет android: layout_alignParentBottom установлен на «true». В то время как средний расположен правильно ниже первого, он доходит до нижней части экрана, так что его нижняя часть перекрывается третьей.

Что не так?

благодаря

<?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="fill_parent" > <LinearLayout android:id="@+id/category" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentTop="true" android:orientation="horizontal" > <ImageView android:id="@+id/back_btn" android:layout_width="29dp" android:layout_height="34dp" android:layout_gravity="center_vertical" android:src="@drawable/red_arrow_left" /> <TextView android:id="@+id/cat_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/category" android:layout_marginTop="10dp" android:orientation="horizontal" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" android:padding="10dp" android:text="@string/no_item" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/nav_bar" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:orientation="horizontal" > //stuff </LinearLayout> </RelativeLayout> 

Solutions Collecting From Web of "Как сделать линейное заполнение оставшегося пространства в режиме релятивирования?"

Nooo … решение намного проще! Вы забыли сказать, что хотите сказать, что второй линейный макет должен быть выше третьего 🙂 Да, второй линейный макет должен иметь BOTH android:layout_below="@+id/category" и android:layout_above="@+id/nav_bar" . Я тестировал его, и он работает.

Но, конечно, вы можете использовать весы для архивирования одних и тех же результатов, это будет сложнее …

Ваш XML с изменением, о котором я упоминал (протестировал его в eclipse):

 <?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="fill_parent" > <LinearLayout android:id="@+id/category" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentTop="true" android:orientation="horizontal" > <ImageView android:id="@+id/back_btn" android:layout_width="29dp" android:layout_height="34dp" android:layout_gravity="center_vertical" android:src="@drawable/red_arrow_left" /> <TextView android:id="@+id/cat_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/nav_bar" android:layout_below="@+id/category" android:layout_marginTop="10dp" android:orientation="horizontal" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" android:padding="10dp" android:text="@string/no_item" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/nav_bar" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:orientation="horizontal" > //stuff </LinearLayout> </RelativeLayout> 

Вы можете попробовать использовать весы для управления относительными размерами дочерних макетов. В моем блоге есть статья, которая дает некоторую информацию об использовании весов макета.

В качестве примера попробуйте следующее:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/category" android:layout_width="fill_parent" android:layout_height="50dp" android:orientation="horizontal" > <ImageView android:id="@+id/back_btn" android:layout_width="29dp" android:layout_height="34dp" android:layout_gravity="center_vertical" /> <TextView android:id="@+id/cat_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/category" android:layout_marginTop="10dp" android:layout_weight="1" android:orientation="horizontal" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:cacheColorHint="@android:color/white" android:padding="10dp" android:text="no_item" /> </LinearLayout> <LinearLayout android:id="@+id/nav_bar" android:layout_width="fill_parent" android:layout_height="40dp" android:orientation="horizontal" > //stuff </LinearLayout> </LinearLayout> 

RelativeLayout был заменен на LinearLayout , все относительные метки позиционирования были удалены, а атрибут layout_weight добавлен в центр LinearLayout который заставит его растягиваться, чтобы заполнить доступное пространство.

Вы должны добавить id ко второй LinearLayout

  <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/category" android:layout_marginTop="10dp" android:@+id/YOUR_ID> 

И в третьем макете добавьте android:layout_below=@id/YOUR_ID

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/nav_bar" android:layout_below=@id/YOUR_ID android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentBottom="true">