Клавиатура Android выдвигает первый EditText под AppBar, и прокрутка возможна только вверх - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в разработке приложений для Android. Я знаю, что есть много похожих вопросов, но я думаю, что этот вопрос немного отличается, и ничего из того, что я пробовал, не работает. У меня есть вход в систему с AppBar и некоторые EditTexts. Когда пользователь выбирает первый, появляется клавиатура и все подталкивает. Первый EditText помещается под AppBar, и я не могу прокрутить вид вниз, только вверх.

В манифесте, который я установил android:windowSoftInputMode="stateHidden|adjustResize". Это макет моей деятельности:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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:background="@color/colorPrimaryDark"
    tools:context=".Login.MainLoginActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbarMainLogin"
            app:layout_scrollFlags="scroll"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            android:theme="@style/AppTheme.AppBarOverlay"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            app:titleTextColor="@android:color/white">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="18dp"
                android:gravity="center"
                android:text="Backoffice"
                android:textColor="@android:color/white"
                android:textSize="20sp" />
        </androidx.appcompat.widget.Toolbar>

    </com.google.android.material.appbar.AppBarLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/appbar"
        android:layout_centerInParent="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical"
            android:paddingLeft="24dp"
            android:paddingRight="24dp">

            <!--  Server Label -->
            <TextView
                android:id="@+id/loginLabel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="30dp"
                android:layout_marginBottom="16dp"
                android:gravity="center_horizontal"
                android:lines="1"
                android:text="@string/loginLabel"
                android:textAlignment="center"
                android:textColor="@android:color/white"
                android:textSize="22sp" />

            <!--  Port Label -->
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:textColorHint="@color/colorPrimaryLight"
                android:theme="@style/TextInputLayoutTheme">

                <EditText
                    android:id="@+id/inputServer"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:hint="Server IP"
                    android:inputType="textNoSuggestions|textPersonName"
                    android:text="192.168.2.1"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:textColorHint="@color/colorPrimaryLight"
                android:theme="@style/TextInputLayoutTheme">

                <EditText
                    android:id="@+id/inputPort"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:hint="Port"
                    android:inputType="textNoSuggestions|number"
                    android:text="8080"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <!--  Username Label -->
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:textColorHint="@color/colorPrimaryLight"
                android:theme="@style/TextInputLayoutTheme">

                <EditText
                    android:id="@+id/inputUsername"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:hint="Username"
                    android:inputType="textNoSuggestions|textPersonName"
                    android:text="maser"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <!--  Password Label -->
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:textColorHint="@color/colorPrimaryLight"
                android:theme="@style/TextInputLayoutTheme">

                <EditText
                    android:id="@+id/inputPassword"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:text="maser"
                    android:textColor="@android:color/white" />
            </com.google.android.material.textfield.TextInputLayout>

            <RadioGroup
                android:id="@+id/idSedeGroup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_marginBottom="8dp"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/multimpiantoRadio"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/white"
                    android:checked="true"
                    android:text="Multimpianto"
                    android:textAlignment="viewStart"
                    android:textColor="@android:color/white"
                    android:textSize="17sp" />

                <RadioButton
                    android:id="@+id/standaloneRadio"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:buttonTint="@android:color/white"
                    android:text="Standalone"
                    android:textAlignment="viewStart"
                    android:textColor="@android:color/white"
                    android:textSize="17sp" />

            </RadioGroup>

            <androidx.appcompat.widget.AppCompatButton
                android:id="@+id/loginButton"
                android:layout_width="fill_parent"
                android:layout_height="36dp"
                android:layout_marginTop="16dp"
                android:layout_marginBottom="16dp"
                android:background="@color/colorPrimary"
                android:onClick="loginPressed"
                android:text="Accedi"
                android:textColor="@android:color/white" />

            <CheckBox
                android:id="@+id/checkCredenziali"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:buttonTint="@android:color/white"
                android:checked="true"
                android:gravity="center"
                android:layoutDirection="rtl"
                android:text="Memorizza credenziali:   "
                android:textColor="@android:color/white"
                android:textSize="16sp" />
        </LinearLayout>
    </ScrollView>

</RelativeLayout>

снимок экрана

Я также попытался, как было предложено, обернуть все в ScrollView и изменить в манифесте windowSoftInputModeнастроить Pan, но ничего не прокручивается.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:fillViewport="true"
    android:scrollbars="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimaryDark"
        tools:context=".Login.MainLoginActivity">
...

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Попробуйте ввести значение для windowSoftInputMode в "adjustPan" в теге активности файла манифеста

android:windowSoftInputMode="adjustPan"

, и вам нужно обернуть свой контент с ScrollView

, который вы можете иметьвзгляд на этот вопрос тоже

0 голосов
/ 06 ноября 2019

Попробуйте обернуть все в Scrollview .... это должно работать

также проверьте это: * Как сделать мой макет способным прокрутить вниз?

...