Я бездельничал, пытаясь заставить мой ящик входа центрироваться вертикально, и по какой-то причине это не работает. Если я изменю свою ConstraintLayout
высоту на wrap_content
, форма входа будет центрирована, но фоновое изображение также будет сжато так:
Фоновое изображение должно оставаться в полноэкранном режиме, но поскольку макет основного ограничения представляет собой перенос содержимого, он сужает свой фон. Вот что произойдет, если я установлю fill_parent
. Мы получаем полноэкранное изображение, но блок больше не центрирован.
В настоящее время у меня есть следующая структура:
Constraint Layout
-> Linear Layout
-> Scroll View
-> login form picture, fields, and button
Я устанавливаю их все для переноса, используя gravity
AND layout_gravity
для центрирования, center_vertical и т. Д., Но я все еще не могу центрировать это изображение. Какие-либо предложения? Вот текущий XML для моего activity_login
макета.
<?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"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_gravity="center"
android:background="@drawable/background"
android:weightSum="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="fill_vertical|center"
android:orientation="vertical"
android:padding="46dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<LinearLayout
android:id="@+id/email_login_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/login_image"
app:srcCompat="@drawable/login_logo" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp">
<AutoCompleteTextView
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/formbg"
android:ems="10"
android:hint="@string/prompt_email"
android:imeActionId="1"
android:imeOptions="actionNext"
android:inputType="textEmailAddress"
android:maxLines="1"
android:padding="16dp" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/formbg"
android:hint="@string/prompt_password"
android:imeActionId="2"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:padding="16dp" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/email_sign_in_button"
style="?android:textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:background="#9f3737"
android:text="@string/action_sign_in"
android:textColor="#ffffff"
android:textStyle="bold" />
</LinearLayout>
</ScrollView>
</LinearLayout>
</android.support.constraint.ConstraintLayout>