java - 打开键盘时 EditText 不可见

标签 java android android-edittext android-softkeyboard

我有一个全屏 Activity ,背景是全屏 ImageView。我使用 gravity:center 在屏幕中间放置了一个 EditText。当键盘打开时,我希望 EditText 向上移动,如下图所示,以便整个 EditText 始终可见。我曾尝试使用 android:windowSoftInputMode="stateVisible|adjustResize" 但是问题是我的背景图像也被调整了大小,这是不可取的。此外,由于重力设置为中心,这导致 EditText 和键盘之间存在间隙,因此它仍然位于中心。我试过使用 scrollView 但是我不知道如何获得键盘结束的位置以便我可以将我的 EditText 移动到那个位置。我也尝试过 adjustPan 但是这没有效果,因为 EditText 的高度是 200dp 并且重力设置为中心所以用户总是在 EditText 的中间开始输入这仍然是可见的。

XML

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<FrameLayout
    android:id="@+id/camera_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</FrameLayout>
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone"
    android:id="@+id/picturedisplay"/>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_gravity="center"
        android:layout_height="200dp"
        android:weightSum="100"
        android:visibility="gone"
        android:id="@+id/pic_layout"
        android:orientation="vertical"
        android:background="#9945D199"
        >
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:hint="Enter text here..."
            android:textColor="#FFFFFF"
            android:maxLength="250"
            android:gravity="center"
            android:imeOptions="flagNoExtractUi"
            android:id="@+id/pic_textbox"
            android:layout_weight="90"/>
        <TextView
            android:layout_width="40dp"
            android:layout_height="0px"
            android:text="200"
            android:textColor="#FFFFFF"
            android:textStyle="bold"
            android:gravity="center_horizontal"
            android:layout_weight="10"
            android:id="@+id/char_rem_view"
            android:layout_gravity="end"/>
    </LinearLayout>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imgClose"
    android:layout_gravity="right|bottom"
    android:text="Flip Cam"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/snap"
    android:text="Capture"
    android:layout_gravity="center|bottom"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Flash"
    android:visibility="visible"
    android:id="@+id/imgOpen"
    android:layout_gravity="left|bottom"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/addText"
    android:layout_gravity="right|bottom"
    android:text="Add Text"
    android:visibility="gone"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/addPic"
    android:text="Add Pic"
    android:visibility="gone"
    android:layout_gravity="center|bottom"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Delete"
    android:id="@+id/delete"
    android:visibility="gone"
    android:layout_gravity="left|bottom"
    android:padding="20dp"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save"
    android:id="@+id/save_photo"
    android:visibility="gone"
    android:layout_gravity="right|top"
    android:padding="20dp"/>

enter image description here

最佳答案

将此添加到您的 EditText xml 中,

android:imeOptions="flagNoExtractUi"

我不确定这个方法是否适合你的需求,希望你能帮助:)

关于java - 打开键盘时 EditText 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496379/

相关文章:

java - 我正在使用 Java 制作工资单。如果我的数学公式看起来正确,为什么我得到的净工资是错误的?

java - 根据时间戳检索kafka主题中的偏移量

java - 与号作为 hashmap 键在 Java 中不起作用?

java - 通过android中的接口(interface)将gcm注册ID从GCMBaseIntentService类传递到MainActivity

java - Android 中如何转义字符串?

android - EditText 现在显示在 ListView 下

android - Activity 上的 OnTouchListener

java - 如何以 log4j2 xml 格式配置日志文件路径到当前工作目标目录

java - 更改 Swarm Connect 的排行榜功能

android - 如何向上 ScrollView 以显示对话框中使用的布局中被键盘隐藏的 EditText