我有一个全屏 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"/>
最佳答案
将此添加到您的 EditText
xml 中,
android:imeOptions="flagNoExtractUi"
我不确定这个方法是否适合你的需求,希望你能帮助:)
关于java - 打开键盘时 EditText 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496379/