Центр прокрутки Android прокрутить в поле вертикально - PullRequest
0 голосов
/ 17 ноября 2018

Я бездельничал, пытаясь заставить мой ящик входа центрироваться вертикально, и по какой-то причине это не работает. Если я изменю свою ConstraintLayout высоту на wrap_content, форма входа будет центрирована, но фоновое изображение также будет сжато так:

image

Фоновое изображение должно оставаться в полноэкранном режиме, но поскольку макет основного ограничения представляет собой перенос содержимого, он сужает свой фон. Вот что произойдет, если я установлю fill_parent. Мы получаем полноэкранное изображение, но блок больше не центрирован.

enter image description here

В настоящее время у меня есть следующая структура:

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>

1 Ответ

0 голосов
/ 17 ноября 2018

Добавление этого к дочернему элементу ConstraintLayout должно центрировать дочерний элемент как по горизонтали, так и по вертикали:

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

Также обратите внимание, что: fill_parent было переименовано match_parent в API уровня 8 и выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...