Я использую ConstraintLayout
в своем приложении, чтобы сделать макет приложения. Я пытаюсь к создать экран где- щ один EditText
и Button
должен быть в центре и Button
должна быть ниже из EditText
с MarginTop только 16dp.
Вот мой макет и скриншот, как это выглядит сейчас.
activity_authenticate_content.xml
<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"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Нужно ли использовать каждый раз, когда мы используемConstraintLayout
?layout_constraintGuide_percent
?Guideline
это просто невидимый элемент, на котором вы можете закрепить свои взгляды.layout_constraintGuide_percent
это процент в родительском. Здесь 0,5 составляет 50% высотыTextInputEditText
и одинButton
. Я хочу разместить их в центре экрана. Но на данный момент это не pastebin.com/iXYtuXHg вот скриншот dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
и центрировать его.Есть более простой способ. Если вы установите ограничения макета следующим образом и ваш EditText имеет фиксированный размер, он будет центрирован в макете ограничения:
Левая / правая пара центрирует вид по горизонтали, а верхняя / нижняя пара центрирует его по вертикали. Это происходит потому, что когда вы устанавливаете левое, правое или верхнее нижнее ограничение больше, чем само представление, представление центрируется между двумя ограничениями, т.е. смещение устанавливается на 50%. Вы также можете перемещать вид вверх / вниз или вправо / влево, установив смещение самостоятельно. Поиграйте с ним немного, и вы увидите, как это влияет на положение просмотров.
источник
app:layout_constraintCenter_in="parent"
было бы намного лучше. Но, как всегда, Google не предоставил это.Решение с рекомендациями работает только для этого конкретного случая с одной строкой EditText. Чтобы он работал для многострочного EditText, вы должны использовать «упакованную» цепочку.
Вот как это выглядит:
Вы можете прочитать больше об использовании цепей в следующих постах:
источник
Вы можете центрировать вид в процентах от размера экрана.
Этот пример использует 50% ширины и высоты:
Это было сделано с использованием ConstraintLayout версии 1.1.3. Не забудьте добавить его в ваши зависимости в Gradle и увеличить версию, если есть новая версия:
источник
добавить эти теги в вашем представлении
и вы можете щелкнуть правой кнопкой мыши в режиме дизайна и выбрать центр.
источник
Вы можете использовать layout_constraintCircle для представления по центру внутри ConstraintLayout.
с помощью constraintCircle to parent и нулевого радиуса вы можете сделать свое представление центром родительского элемента.
источник