当我点击LinearLayout
键入一些文字,出现键盘并且出现EditText
时,程序屏幕底部有一个EditText
包含一个EditText
。高度缩小了,所以看不到我在EditText
中写的内容。
我对此进行了搜索,发现可能与AndroidManifest.xml
文件有关。所以我将这一行添加到文件中:
android:windowSoftInputMode="adjustPan"
但是在将代码添加到清单EditText
中之后,这并没有达到我想要的效果。
最后我想知道有什么方法可以防止在显示键盘时调整视图大小吗?
我的活动XML代码:
<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="false">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="10"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/msgView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:background="@drawable/sssaaa">
</android.support.v7.widget.RecyclerView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:weightSum="10">
<EditText
android:id="@+id/txt_message"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="8.8"
android:background="@drawable/rounded_corner"
android:hint="@string/hint"
android:inputType="text"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="#000000" />
<Button
android:id="@+id/btn_send"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:background="@drawable/circular_button"
android:textColor="#000000"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
我找到了一种解决方法,因为您正在使用Constraint Layout
,所以我将两个Linear Layout
,RecyclerView
和发送消息字段分开了。
由于EditText
将始终在屏幕上,并且RecyclerView
已经包含ScrollView,因此它们可能正在屏幕上竞争,因此RecyclerView
不需要占据整个屏幕。
<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="false">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:weightSum="0"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/msgView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:weightSum="10">
<EditText
android:id="@+id/txt_message"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="8.8"
android:inputType="text"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="#000000" />
<Button
android:id="@+id/btn_send"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:textColor="#000000"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
要测试,我删除了包含可绘制对象的行,只需将它们放回去并运行代码即可。
请注意,我将Linear Layout
的父EditText
的高度更改为50dp
答案 1 :(得分:0)
尝试一下:
android:windowSoftInputMode="stateVisible|adjustNothing"