#android #android-constraintlayout
Вопрос:
Я знаю это Start = Left
и End = Rignt
в ConstraintLayout
.
Однако, помимо этого, то, что появляется на экране предварительного просмотра, немного отличается.
Когда ограничение используется как layout_constraintLeft_toLeftOf="parent"
(и правильно)
Когда ограничение используется как layout_constraintStart_toStartOf="parent"
(и заканчивается)
Как вы можете видеть разницу на изображении, когда Left and Right
они используются, они не полностью прикреплены к parent
изображению , но немного отделены друг от друга. Но Start and End
привязаны к parent
.
До этого момента я думал, что это одно и то же.
В чем разница между ними двумя?
В настоящее время я хочу прикрепить только первую линейную разметку слева на первом изображении. (Оставьте фиксированными позиции второй и третьей линейной разметки)
XML
lt;?xml version="1.0" encoding="utf-8"?gt; lt;layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"gt; lt;androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="10dp" android:layout_marginVertical="8dp"gt; lt;LinearLayout android:id="@ id/ll_set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toLeftOf="@id/ll_weight" app:layout_constraintTop_toTopOf="parent"gt; lt;TextView android:id="@ id/set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:textSize="16dp" /gt; lt;TextView android:id="@ id/unit_set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="set" android:textSize="16dp" /gt; lt;/LinearLayoutgt; lt;LinearLayout android:id="@ id/ll_weight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toRightOf="@ id/ll_set" app:layout_constraintRight_toLeftOf="@id/ll_rep"gt; lt;EditText android:id="@ id/weight" android:layout_width="53dp" android:layout_height="wrap_content" android:inputType="numberDecimal" android:maxLength="5" android:textSize="16dp" /gt; lt;TextView android:id="@ id/unit_kg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="lb" android:textSize="16dp" /gt; lt;/LinearLayoutgt; lt;LinearLayout android:id="@ id/ll_rep" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toRightOf="@id/ll_weight" app:layout_constraintRight_toRightOf="parent"gt; lt;EditText android:id="@ id/rep" android:layout_width="55dp" android:layout_height="wrap_content" android:inputType="numberDecimal" android:maxLength="5" android:textSize="16dp" /gt; lt;TextView android:id="@ id/unit_rep" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="rep" android:textSize="16dp" /gt; lt;/LinearLayoutgt; lt;/androidx.constraintlayout.widget.ConstraintLayoutgt; lt;/layoutgt;
Комментарии:
1. Каков идентификатор представления, которое вы хотите настроить?
2. @AliSh Я хочу прикрепить только макет
id
вызываемогоll_set
слева.3. «Я знаю, что Start = Слева и End = Rignt в ConstraintLayout». Это верно для англоязычных языков. В арабоязычных языках Начальная и левая части не одинаковы.
Ответ №1:
Ваша проблема в том, что вы используете app:layout_constraintLeft_toLeftOf
и. app:layout_constraintRight_toLeftOf
Если вы хотите изменить его, вы должны изменить их оба на layout_constraintStart_toStartOf
и layout_constraintEnd_toStartOf
.
Вы должны использовать одну из этих комбинаций(слева и справа) или (начало и конец).
Вы не должны использовать app:layout_constraintStart_toStartOf
с app:layout_constraintRight_toLeftOf
Кроме того, когда вам необходимо поддерживать языки RTL, такие как арабский, начало!=слева и конец!=справа
Комментарии:
1. Я согласен с этим ответом. Используйте все слева/справа или начало/конец, но не смешивайте их. Вероятно, лучше использовать влево/вправо и начало/конец, чтобы охватить базы, но это может зависеть от вашего minSdk. В любом случае, вы можете рассмотреть возможность сообщения об этом как об ошибке, поскольку это то, что команда ConstraintLayout может захотеть устранить.
2.спасибо вам за ответ. Мне очень жаль, но я попрошу немного больше.
1.
Почему бы не использоватьlayout_constraintStart_toStartOf
иlayout_constraintRight_toLeftOf
вместе? (или используя Конец и влево вместе)2.
Я хочу переместить только видid
ll_set to the left
, как я могу это сделать? При использованииmargin
,ll_weight
аll_rep
также перемещении.3. 1. Речь идет о том, как реализован ConstarinLayout, 2. Вы можете установить layout_width=»0dp» для всех линейных макетов, при необходимости добавьте android:gravity и для линейных макетов