【发布时间】:2016-02-19 02:42:15
【问题描述】:
我有一个全屏活动,背景是全屏 ImageView。我使用gravity:center 在屏幕中间放置了一个EditText。当键盘打开时,我希望 EditText 向上移动,如下图所示,以便整个 EditText 始终可见。我曾尝试使用android:windowSoftInputMode="stateVisible|adjustResize",但问题是我在背景中的图像也被调整了大小,这是不可取的。此外,由于重力设置为居中,这导致 EditText 和键盘之间存在间隙,因此它仍然位于中心。我曾尝试使用 scrollView 但是我不知道如何获取键盘结束的位置,以便我可以将我的 EditText 移动到该位置。我也尝试过adjustPan,但是这没有效果,因为 EditText 的高度为200dp,并且重力设置为中心,因此用户总是开始在 EditText 的中间输入,而该 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"/>
【问题讨论】:
-
你能贴出你的xml代码吗?
-
@Jayanth 我发布了 xml
-
如果可能的话,将 EditText 放到它自己的 ViewGroup 中,例如 LinearLayout/RelativeLayout 或 FrameLayout。它应该确保编辑框在获得焦点时始终可见。
标签: java android android-edittext android-softkeyboard