Intereting Posts
В Google API Access можно создать несколько идентификаторов клиентов для одного и того же имени пакета Android? Android: программно определить, есть ли у устройства аппаратное меню Что такое MediaPlayer.OnInfoListener "code 973"? Как включить указатель мыши в устройствах Android с помощью команд adb Как определить, какой стандарт используется wifi ap / network? Как преобразовать битмап в массив байтов в Mono для Android Использование Application.onConfigurationChanged Связь между активностью и ее компоновкой в ​​Android Как получить доступ к просмотру внутри включенного макета с использованием привязки данных Ошибка телефонной почты. «Метатег метаданных не поддерживается. Пожалуйста, добавьте его при использовании плагина cordova-plugin-whitelist. " ActionBar BUG: Навигация в режиме списка не отображается после использования SearchView Как вызвать фрагмент из активности в android? Проведите по одному пункту за раз. Recycliewiew Android-анимация Listview Refresh Создание текста TabLayout полужирным шрифтом

Соотношение сторон ConstraintLayout

Рассмотрим следующий файл макета:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.constraint.ConstraintLayout android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF0000" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ImageView android:layout_width="0dp" android:layout_height="0dp" android:background="#0000FF" android:padding="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintDimensionRatio="H,3:1" tools:layout_editor_absoluteX="16dp" /> </android.support.constraint.ConstraintLayout> </RelativeLayout> 

Я не уверен, как работает приложение: layout_constraintDimensionRatio. Мое понимание – это отношение всегда будет шириной: высота. Таким образом, 3: 1 всегда будет показывать изображение в 3 раза шире высоты. Префикс H или W указывает ConstraintLayout, какое измерение должно учитывать отношение. Если это H, то это означает, что ширина будет сначала вычисляться из других ограничений, а затем высота будет скорректирована в соответствии с соотношением сторон. Однако это результат макета:

Введите описание изображения здесь

Высота в 3 раза больше ширины, что является неожиданным. Может ли кто-нибудь объяснить мне, как размеры вычисляются относительно приложения: layout_constraintDimensionRatio?

Взгляните на эти свойства ImageView :

  app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" 

Эти свойства переопределяют layout_constraintDimensionRatio из-за которых ImageView ограничен снизу, сверху и слева от основного родителя, в результате чего View занимает левую, верхнюю и нижнюю части основного экрана.

  app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" 

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