Android: держите TextInputEditText в поле зрения при наборе текста - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать действие с парой элементов TextInputEditText.Они располагаются примерно на половине страницы, поэтому при их появлении они закрываются клавиатурой.Поэтому я пытаюсь использовать windowSoftInputMode="adjustPan" внутри AppManifest.xml, чтобы экран прокручивался, чтобы текстовые поля были видны при наборе текста.

Однако все попытки этого кажутся неудачными.Ниже приведена иерархия макетов, которую я использую, а также несколько примеров решений, которые я уже пытался безрезультатно.

макет xml

<ScrollView
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillViewport="true"
    android:isScrollContainer="false">

    <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="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/inputA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/inputAText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/inputB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/inputBText"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.design.widget.TextInputLayout>

   </android.support.constraint.ConstraintLayout>

</ScrollView>

Фрагмент AndroidManifest.xml

<activity
    android:name=".activities.MyActivity"
    android:windowSoftInputMode="adjustPan"
    android:screenOrientation="sensorPortrait"
    android:theme="@style/AppTheme.NoActionBar" />

Попытки решения

  1. Добавьте windowSoftInputMode="adjustPan" к соответствующему activity в AppManifest.xml (Я также пробовал adjustResize и adjustPan|adjustNothing, как и в соответствии с другими предложениями StackOverflow)
  2. Поместите ConstraintLayout внутри ScrollView
  3. Добавьте android:isScrollContainer="false" к указанному ScrollView
  4. Повторно создайте файл макета, указав только ConstraintLayout и TextInputEditText в нижней части указанного макета
  5. Измените TextInputEditText на EditText и удалите TextInputLayout
  6. Изменено ConstraintLayout на RelativeLayout

Что за довольно простая реализация, я в растерянности.Любые дальнейшие предложения приветствуются.Я рад предоставить больше примеров кода при необходимости.

1 Ответ

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

Нашел проблему! В своей теме я объявил <item name="android:windowTranslucentStatus">true</item>. По какой-то причине это нарушает windowSoftInputMode="adjustPan", и поэтому я удалил его.

Чтобы строка состояния была прозрачной, я использую <item name="android:statusBarColor">@color/transparent</item>.

Надеюсь, кто-нибудь когда-нибудь найдет это полезным.

...