gpt4 book ai didi

android - 如何修复出现键盘时 EditText 缩小的问题

转载 作者:行者123 更新时间:2023-11-29 00:54:21 27 4
gpt4 key购买 nike

当我点击 EditText 键入一些文本时,我的程序中的屏幕底部有一个 LinearLayout 包括一个 EditText ,键盘出现了,EditText高度变小了,所以看不到我在EditText中写的东西。

before keyboard

after keyboard

我对此进行了搜索,发现它可能与 AndroidManifest.xml 文件有关。所以我将这一行添加到文件中:

 android:windowSoftInputMode="adjustPan"

但是在我将这段代码添加到 list EditText 后,这并没有像我想要的那样工作,它被放置在键盘后面。

after adding code to AndroidManifest file

最后我想知道有什么方法可以防止在显示键盘时调整 View 大小?

我的 Activity 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>

最佳答案

我找到了一个解决方法,因为您使用的是 Constraint Layout,所以我将两个 Linear LayoutRecyclerView 和 send 分开了消息字段。由于 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>

enter image description here

为了测试,我删除了包含可绘制对象的行,只需将它们放回去并运行代码即可。

请注意,我将 EditText 的父级 Linear Layout 的高度更改为 50dp

关于android - 如何修复出现键盘时 EditText 缩小的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com