我正在编写一个有聊天功能的应用程序,它看起来如下所示:
由于某种原因,键盘隐藏了X1 M0 N1 X的下部。而且,它似乎隐藏了聊天中的最后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"/>
**EDIT:**据我所知,键盘正好打开到EditText内部文本的底部。由于该文本位于EditText的中间,它似乎隐藏了较低的灰色部分。因此,据我所知,需要从EditText外部的底部开始,就像从EditText的外部形状开始,而不是从文本开始的地方开始。
例如它从这里开始;
代替:
据我所知,我需要一些像“底部空白”从键盘。
只是为了澄清-我知道AdjustResize/AdjustPan
。AdjustResize
缩小了我的EditText
,所以我试图避免它。AdjustPan
完成了这项工作,但它将屏幕移动到文本的底部!文本的底部不是EditText
的底部。这是我试图实现的,所以AdjustPan
不仅仅解决了问题。添加marginBottom
也不能解决这个问题,因为它只是让AdjustPan移动屏幕,再次移动到文本的底部。我试图“愚弄”AdjustPa
n或添加一些偏见。
谢谢你
7条答案
按热度按时间pdsfdshx1#
请尝试在清单中使用
android:windowSoftInputMode="adjustResize"
。niwlg2el2#
在你的清单中,把这个写在你的具体活动中:
3npbholx3#
将以下内容添加到您的活动中:
或者这样:
mftmpeh84#
在你的载货单上写上
此外,如果仅添加上述内容无法解决问题,或者,请尝试为编辑文本或放置编辑文本的布局给予“下边距”。
假设
您也可以将编辑文本放在布局中,并在其周围给予边距。
gopyfrb35#
您已经采用了两个约束布局并以90:10的比例划分了整个屏幕。如果没有此固定比例的限制,则可以将比例更改为85:15。
在后一种情况下,完整的EditText可见。
7uhlpewt6#
你用
vertical orientation
在一个linearlayout
中制作所有的edittext,这个lineralayout
在scroolview
下制作,就像ex一样。wnrlj8wa7#
尝试将android:fitsSystemWindows=“true”添加到XML格式的父容器中