Ответ 1
Также установите
android:clipToPadding="false"
Рядом:
android:clipChildren="false"
У меня есть желтый RelativeLayout
, содержащий более высокий красный LinearLayout
.
Чтобы сделать видимым все LinearLayout
, я установил android:clipChildren="false"
, но это не работает так, как ожидалось:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="#FFFF00"
android:clipChildren="false" >
<LinearLayout
android:layout_width="50dp"
android:layout_height="100dp"
android:background="#FF0000"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
android:clipChildren="true"
:
с красным LinearLayout
обрезанным, как ожидалось
android:clipChildren="false"
:
где высота LinearLayout
обрезается, а ширина, заданная в макете, не соблюдается.
Что не так?
ИЗМЕНИТЬ
Если я упакую контейнер в LinearLayout
с обоими измерениями, соответствующими его родительскому элементу, я получаю тот же результат (я проверил, что контейнер контейнера LinearLayout заполняет весь экран).
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="#FFFF00"
android:clipChildren="false" >
<LinearLayout
android:layout_width="50dp"
android:layout_height="100dp"
android:background="#FF0000"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
</LinearLayout>
ИЗМЕНИТЬ 2
Если я помещаю атрибут android:clipChildren="false"
в родительский LinearLayout, я получаю следующее:
Также установите
android:clipToPadding="false"
Рядом:
android:clipChildren="false"
android:clipChildren="false"
позволяет каждому ребенку рисовать за пределами собственных границ внутри родителя. Это не позволяет детям рисовать вне самого родителя. Для этого вам нужно установить android:clipChildren="false"
для дедушки и бабушки (также).
Я думаю, что вы видите цвета - это просто потому, что цвета не имеют неотъемлемых границ. Если ничего не обрезают, цвета уходят навсегда. Моя теория заключается в том, что если вы использовали, скажем, растянутое изображение 1x1 px вместо цвета, все будет по-другому.
Уловка, которая может решить вашу проблему, состоит в том, чтобы добавить некоторое представление заполнителя
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
android:layout_alignParentBottom="true"/>
в относительной компоновке и бум!
Для меня граница относительного расположения, кажется, отличается от высоты. Граница, кажется, там, где заканчивается контент или где заканчивается родительский элемент. Добавление некоторого вида внизу устанавливает динамику внизу, чтобы все работало нормально.