ConstraintView мешает показу клавиатуры - PullRequest
0 голосов
/ 02 ноября 2018

Я прошел через различные решения от stackoverflow и других сайтов, но все еще не решен. Когда появляется клавиатура, переключатели переключаются вверху текста редактирования.

enter image description here

В методе onCreate класса MainActivity я написал следующую строку:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

В Android Manifest.xml я добавил строку в Activity:

<activity android:name=".MainActivity"
 android:windowSoftInputMode="adjustResize"
>

Ниже приведен файл acitivtiy_main.xml:

  <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="368dp"
        android:layout_height="47dp"
        android:layout_gravity="end"
        android:layout_marginStart="8dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toTopOf="@+id/listView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText">

        <RadioButton
            android:id="@+id/azadRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="آزاد"
            android:textSize="30sp" />

        <RadioButton
            android:id="@+id/qafiaRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="قافیہ"
            android:textSize="30sp" />

        <RadioButton
            android:id="@+id/sabiqaRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="سابقہ"
            android:textSize="30sp" />
    </RadioGroup>

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="36dp"
        android:ems="10"
        android:inputType="text"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="36dp"
        android:layout_marginEnd="8dp"
        android:onClick="Finder"
        android:text="Finder"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.555"
        app:layout_constraintStart_toEndOf="@+id/editText"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="339dp"
        android:layout_height="266dp"
        android:layout_marginStart="16dp"
        android:layout_marginBottom="44dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>

Ответы [ 2 ]

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

Просто добавьте nestedScrollView сверху и снизу вашего xml. как это:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">


<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:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="368dp"
        android:layout_height="47dp"
        android:layout_gravity="end"
        android:layout_marginStart="8dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toTopOf="@+id/listView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText">

        <RadioButton
            android:id="@+id/azadRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="آزاد"
            android:textSize="30sp" />

        <RadioButton
            android:id="@+id/qafiaRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="قافیہ"
            android:textSize="30sp" />

        <RadioButton
            android:id="@+id/sabiqaRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:layout_weight="1"
            android:gravity="right"
            android:layoutDirection="rtl"
            android:text="سابقہ"
            android:textSize="30sp" />
    </RadioGroup>


    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="36dp"
        android:ems="10"
        android:inputType="text"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="36dp"
        android:layout_marginEnd="8dp"
        android:onClick="Finder"
        android:text="Finder"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.555"
        app:layout_constraintStart_toEndOf="@+id/editText"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="339dp"
        android:layout_height="266dp"
        android:layout_marginStart="16dp"
        android:layout_marginBottom="44dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
0 голосов
/ 02 ноября 2018

Ваш EditText имеет ненулевую высоту (wrap_content) и ограничен вершиной родительского элемента.

Ваш ListView имеет фиксированную высоту (266dp) и ограничен низом родителя.

Ваш RadioGroup имеет фиксированную высоту (47dp) и ограничен между EditText и ListView.

Рассмотрим, что произойдет, если доступная высота (высота родительского элемента) будет меньше, чем 266dp + 47dp + высота EditText. Еще проще, подумайте, что произойдет, если доступная высота меньше 266dp.

В этих случаях вершина ListView будет на выше нижней части EditText. Это «потянет» RadioGroup в противоположных направлениях, и оно наложится на себя поверх EditText и ListView.

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

  • Оставьте EditText таким, какой он есть
  • Измените RadioGroup так, чтобы она ограничивалась только нижней частью EditText
  • Измените ListView, чтобы он имел высоту 0dp, и ограничьте его верхнюю часть нижней частью RadioGroup, а его нижнюю часть - нижней частью родительского элемента

Это приведет к тому, что все «лишние» места будут переданы ListView.

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    ...>

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_height="47dp"
        app:layout_constraintTop_toBottomOf="@+id/editText"
        ...>

        <!-- ... -->

    </RadioGroup>

    <EditText
        android:id="@+id/editText"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        .../>

    <Button
        .../>

    <ListView
        android:id="@+id/listView"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@+id/radioGroup"
        app:layout_constraintBottom_toBottomOf="parent"/>

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