ConstraintLayout макет constraintDimensionRatio не работает
я использовал constraintLayout и layout_constraintDimensionRatio = " 1:1" (ширина-warp_content, высота-0dp (match_constraint))
в результате я ожидал, что ширина и высота будут 1: 1, но не работают.
что не так??
Я приложил код и скриншот.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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">
<TextView
android:id="@+id/t1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:background="@android:color/holo_blue_bright"
android:gravity="center"
android:text="Hello World!11"
app:layout_constraintDimensionRatio="1:1" />
</android.support.constraint.ConstraintLayout>
я цитирую сайт разработчика android о Constraintlayout. https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html#DimensionConstraints
" :: Можно также определить одно измерение виджета как отношение другого. Для этого необходимо, чтобы хотя бы одно ограниченное измерение было установлено в 0dp (т. е. MATCH_CONSTRAINT), а атрибут layout_constraintDimentionRatio-в заданное отношение. Например: <Button android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1" />
установит высоту кнопка должна быть такой же, как ее ширина."
--> но я не работал.
3 ответов
вы забыли добавить свои ограничения
<android.support.constraint.ConstraintLayout
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">
<TextView
android:id="@+id/t1"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@android:color/holo_blue_bright"
android:gravity="center"
android:text="Hello World!11"
app:layout_constraintDimensionRatio="1" />
</android.support.constraint.ConstraintLayout>
0dp применяется только к дочерним представлениям ConstraintLayout. Любое представление должно применять правила атрибутов своего родителя.
как off версии 1.1.0 это изменилось.
теперь вы можете определить:
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintDimensionRatio="H,1:1"
Проверьте ссылку ниже, чтобы найти всю документацию, касающуюся DimensionConstraints:
обратите внимание на последнюю строку, добавление ограничений по краям заставляет ограничение работать.
вы также можете использовать представление "дизайн" в Studio и перетаскивать ограничения между объектами.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Available chats" />
<ListView
android:id="@+id/listChats"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/textView"/>