键盘隐藏了EditText

时间:2019-10-15 18:03:37

标签: android xml android-layout android-softkeyboard

我正在编写一个具有聊天功能的应用,它看起来如下:

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/AdjustPanAdjustResize缩小了EditText,因此我正尝试避免这种情况。 AdjustPan可以完成工作,但是它将屏幕移到TEXT的底部!文本的底部不是EditText的底部。这就是我要实现的目标,因此AdjustPan不仅可以解决问题。添加marginBottom并不能解决问题,因为它只是使AdjustPan移动屏幕以再次移动到文本的底部。我正在尝试“愚弄” AdjustPa n或给它添加一些偏见。

谢谢

7 个答案:

答案 0 :(得分:1)

我有同样的问题。尝试以下代码:

  

android:windowSoftInputMode =“ adjustPan | stateHidden”

在您的android:windowSoftInputMode中删除AndroidManifest.xml的adjustPan值。

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

adjustPan的值在Android官方网站上解释为:

  

活动的主窗口未调整大小以为软件留出空间   键盘。而是,窗口的内容会自动平移   这样键盘和用户就不会遮挡当前的焦点   总是可以看到他们在打字。这通常不太理想   而不是调整大小,因为用户可能需要关闭软键盘才能   到达并与窗口的遮盖部分互动。

来源: https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

答案 1 :(得分:0)

尝试在清单中使用android:windowSoftInputMode="adjustResize"

答案 2 :(得分:0)

在清单中将其添加到您的垂直活动中

 android:windowSoftInputMode="adjustResize|stateHidden"

答案 3 :(得分:0)

将此添加到您的活动中:

android:windowSoftInputMode="adjustPan"

或者这个:

android:windowSoftInputMode="adjustResize|stateHidden"

答案 4 :(得分:0)

放在清单中

  android:windowSoftInputMode="adjustResize"

如果仅在上面添加内容不能解决您的问题,或者尝试为您的编辑文本或放置编辑文本的布局提供“底边距”。

我们说

 android:layout_marginBottom="10dp"

您还可以将编辑文本放在布局中并在其周围留出空白。

答案 5 :(得分:0)

您已采取了两个约束布局,并将整个屏幕按90:10的比例划分。 如果对此固定比例没有限制,则可以将比例更改为85:15。

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

完整EditText在以后的情况下可见。

答案 6 :(得分:0)

  

您用linearlayout在一个vertical orientation中制作了所有编辑文本,而在lineralayout下制作了scroolview   像前一样。

<scroolview>
  <linearlayout>
 ---text view your all---
  </linearlayout>
<scroolview>