对于EditText,如何让键盘不覆盖它和其他一些视图?

问题描述 投票:1回答:2

背景

我有一个EditText,当专注于它时,它应该显示一个键盘,但仍显示整个EditText,我可能需要在下面包含一些视图。

问题

由于某些要求,我需要EditText的文本尺寸较小,但高度也要最小。

我已经摘录了一个小例子来说明这个问题:

<?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" android:clipChildren="false"
    android:clipToPadding="false" tools:context=".MainActivity">

    <androidx.appcompat.widget.AppCompatEditText
        android:id="@+id/messageEditText" android:layout_width="0px" android:layout_height="wrap_content"
        android:hint="write here" android:minHeight="?attr/actionBarSize" android:textSize="12sp"
        app:layout_constrainedWidth="true" app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:background="" />

</androidx.constraintlayout.widget.ConstraintLayout>

[当我专注于EditText时,由于某种原因,我看不到它的行:

enter image description here

我尝试过的

我尝试添加填充,并尝试添加假的底部可绘制对象。那些只能添加空白空间,但会使行距显示得更远。

问题

是否有可能使EditText具有最小的高度和文本大小,同时在出现键盘时让其显示行?

是否还可以在EditText下方显示更多?让EditText靠近键盘不是很好。我知道在此代码段中我只有EditText,但可以想象下面有更多视图。

android android-edittext android-softkeyboard
2个回答
0
投票

使用AndroidManifest.xml文件中的代码:

<activity
        android:name="com.example.MainActivity"
        android:label="@string/activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" />

此代码对我有用。在活动标签的清单文件中添加以下属性:

android:windowSoftInputMode =“ adjustResize | stateHidden”


0
投票

您可以在Android清单中设置windowSoftInputMode

<activity
android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] > 
</activity>

根据您的情况,我认为您应该使用adjustPan。您的窗口大小不会改变,但内容会向上转换。以下是有关adjustPan的文档:

活动的主窗口未调整大小以为软键盘腾出空间。而是,窗口的内容会自动平移,以使当前焦点不会被键盘遮挡,并且用户始终可以看到他们正在键入的内容。通常,这不如调整大小那么可取,因为用户可能需要关闭软键盘才能到达窗口并与模糊的部分进行交互。]

如果您不希望内容视图布局转换,则使内容滚动出屏幕。您可以使用adjustResize

如果您想了解更多信息,可以阅读官方document

© www.soinside.com 2019 - 2024. All rights reserved.