Подтвердить что ты не робот

Что такое android: layout_gravity = "clip_vertical" точно

свойство android: layout_gravity = "clip_vertical | horizontal" делает следующее, как указано в документации sdk:

Дополнительная опция, которая может быть установлена ​​на имеют верхний и/или нижний края ребенок привязан к контейнеру границы. Клип будет основан на вертикальная гравитация: верхняя гравитация будет закрепите нижний край, нижнюю гравитацию закрепит верхний край, и ни будет обрезать оба края.

но я ничего не вижу в своих приложениях

Итак, какова цель этого свойства в точности?

спасибо

4b9b3361

Ответ 1

Краткая версия:

clip_horizontal и clip_vertical применяются к измерениям самого представления, прежде чем будут отображаться любые содержимое (например, изображение в BitmapDrawable).


Длинная версия:

Я столкнулся с некоторой подобной путаницей над clip_horizontal и clip_vertical. (В моем случае это было связано с андроидом: гравитация для BitmapDrawable, но она достаточно похожа на применимость.)

Из документации я подумал, что что-то вроде android: gravity = "top | left | clip_vertical" в растровом изображении приведет к тому, что верхний левый угол изображения будет расположен в верхнем левом углу обзора и что, если битмап был выше чем представление, оно будет "обрезано" в нижнем краю представления. Другими словами, покажите только ту часть растрового изображения, что вид достаточно высок, чтобы показывать; не растягивайте растровое изображение, а вместо этого показывайте все, что подойдет, позволяя остальным проходить ниже нижнего края.

Однако произошло обратное: когда я установил clip_vertical, большая растровая карта была повернута вертикально, чтобы соответствовать высоте представления.

После изучения метода applyDisplay() в платформе /frameworks/core/java/android/view/Gravity.java, я осознал свою ошибку:

Это не растровое изображение, которое должно быть обрезано, но представление - фактический размер контейнера, в который в конечном итоге обращается изображение.

Настройка clip_vertical в моем случае не означала "обрезать изображение на нижнем краю", это означало "скопировать представление BitmapDrawable, чтобы его высота соответствовала высоте его родительского контейнера"..., который затем вызвал изображение быть "сплюснутым", когда он заполняет ту более короткую высоту.

Итак, важно помнить с помощью android: gravity and android: layout_gravity - это то, что clip_horizontal и clip_vertical применяются к измерениям самого представления, прежде чем будут отображаться любые содержимое (например, мое BitmapDrawable).

Ответ 2

Возможно, эффекта нет, потому что horizontal не определен в android:layout_gravity. clip_vertical - это просто дополнительное свойство, которое используется в дополнение к базовому свойству.

Ответ 3

Флаг, чтобы закрепить края объекта в его контейнере вдоль горизонтальной оси.

проверьте это