Клавиатура скрывает EditText - PullRequest
       77

Клавиатура скрывает EditText

0 голосов
/ 15 октября 2019

Я пишу приложение, в котором есть чат, и оно выглядит следующим образом:

enter image description here

Почему-то клавиатура скрывает нижнюю частьиз EditText. Кроме того, похоже, что он скрывает последние 2 сообщения в чате.

XML выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    tools:context=".ChatActivity">


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_Messages"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintHeight_percent="0.9"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintHeight_percent="0.1"
        app:layout_constraintBottom_toBottomOf="parent">

        <EditText
            android:id="@+id/et_Message"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:background="@drawable/et_rounded"
            android:fontFamily="@font/assistant"
            android:hint="Type a message"
            android:textSize="12sp"
            android:paddingLeft="24dp"
            android:inputType="textMultiLine|textPersonName"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintWidth_percent="0.85"/>

        <ImageButton
            android:id="@+id/ib_Send"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:layout_marginHorizontal="8dp"
            style="?android:borderlessButtonStyle"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_path_2830"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintWidth_percent="0.1"/>


    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Есть ли причина для этого?

Ву меня есть манифест:

<activity android:name=".ChatActivity" android:windowSoftInputMode="adjustPan"/>

РЕДАКТИРОВАТЬ: Из того, что я заметил, клавиатура открывается точно до нижней части текста внутри EditText. Поскольку этот текст находится в середине EditText, кажется, что он скрывает нижнюю серую часть. Поэтому, насколько я понимаю, необходимо, чтобы он начинался снизу снаружи EditText, как и с внешней формы EditText, а не с того места, где начинается текст.

Например, он начинается здесь;

enter image description here

Вместо:

enter image description here

Из того, что я понимаю, янужно что-то вроде "нижнего поля" с клавиатуры.

Просто чтобы прояснить это - я знаю о AdjustResize/AdjustPan. AdjustResize сжимает мой EditText, поэтому я пытаюсь избежать этого. AdjustPan делает работу, однако перемещает экран внизу ТЕКСТА! нижняя часть текста не является нижней частью EditText. Это то, чего я пытаюсь достичь, поэтому AdjustPan не просто решает проблему. Добавление marginBottom также не решает проблему, поскольку заставляет AdjustPan переместить экран, чтобы снова переместиться в конец текста. Я пытаюсь "одурачить" AdjustPa n или добавить к этому некоторую предвзятость.

Спасибо

Ответы [ 7 ]

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

У меня были такие же проблемы. Попробуйте следующий код:

android: windowSoftInputMode = "AdjustPan | StateHidden"

Удалите значение AdjustPan для android:windowSoftInputMode в вашем AndroidManifest.xml. Значение

<activity
        android:name=".Activities.InputsActivity"
        ...
        android:windowSoftInputMode="adjustResize|stateHidden"
        />

adjustPan на официальном сайте Android объясняется следующим образом:

Главное окно действия не изменено, чтобы освободить место для экранной клавиатуры. Скорее, содержимое окна автоматически панорамируется, так что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они печатают. Как правило, это менее желательно, чем изменение размера, поскольку пользователю может потребоваться закрыть экранную клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.

Источник: https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

0 голосов
/ 16 октября 2019

вы делаете все edittext в одном linearlayout с vertical orientation, и это lineralayout делает под scroolview, как например.

<scroolview>
  <linearlayout>
 ---text view your all---
  </linearlayout>
<scroolview>
0 голосов
/ 16 октября 2019

Вы взяли два ограничения и разделили весь экран в соотношении 90:10. Если это фиксированное соотношение не ограничено, вы можете изменить соотношение на 85:15.

 app:layout_constraintHeight_percent="0.85"
 app:layout_constraintHeight_percent="0.15"

Полный текст редактирования виден в более позднем случае.

0 голосов
/ 16 октября 2019

В вашем манифесте укажите

  android:windowSoftInputMode="adjustResize"

Также, если только добавление выше не решило вашу проблему или попробуйте указать «нижнее поле» для текста или макета, в котором находится текст для редактирования.

Допустим,

 android:layout_marginBottom="10dp"

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

0 голосов
/ 15 октября 2019

Добавьте это к вашей деятельности:

android:windowSoftInputMode="adjustPan"

Или это:

android:windowSoftInputMode="adjustResize|stateHidden"
0 голосов
/ 15 октября 2019

В вашем манифесте укажите это в вашей челюстной деятельности:

 android:windowSoftInputMode="adjustResize|stateHidden"
0 голосов
/ 15 октября 2019

Попробуйте с android:windowSoftInputMode="adjustResize" в своем манифесте.

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