使用Open Keyboard

时间:2016-02-19 02:42:15

标签: java android android-edittext android-softkeyboard

我在后台使用全屏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

2 个答案:

答案 0 :(得分:0)

EditText xml,

中添加此内容

android:imeOptions="flagNoExtractUi"

我不确定这种方法是否符合您的需求,希望您能提供帮助:)

答案 1 :(得分:-1)

打开你的menifest.xml找到你的活动并添加这一行

<activity android:windowSoftInputMode="adjustResize" />

<activity android:windowSoftInputMode="adjustPan" />

您的活动代码应如下所示

<activity
    android:name="com.my.MainActivity" //Change this to your.package.ActivityName
    android:screenOrientation="portrait"
    android:label="@string/title_activity_main"
    android:windowSoftInputMode="adjustPan" >
</activity>

<activity
    android:name="com.my.MainActivity"  //Change this to your.package.ActivityName
    android:screenOrientation="portrait"
    android:label="@string/title_activity_main"
    android:windowSoftInputMode="adjustResize" >
</activity>

更新1

<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:id="@+id/picturedisplay"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="gone" />

<LinearLayout
    android:id="@+id/pic_layout"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:layout_gravity="center"
    android:background="#9945D199"
    android:gravity="center"
    android:orientation="vertical"
    android:visibility="visible">

    <EditText
        android:id="@+id/pic_textbox"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom|center"
        android:hint="Enter text here..."
        android:maxLength="250"
        android:maxLines="6"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/char_rem_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:gravity="center_horizontal"
        android:padding="5dp"
        android:text="200"
        android:textColor="#FFFFFF"
        android:textStyle="bold" />
</LinearLayout>

<Button
    android:id="@+id/imgClose"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right|bottom"
    android:padding="20dp"
    android:text="Flip Cam" />

<Button
    android:id="@+id/snap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center|bottom"
    android:padding="20dp"
    android:text="Capture" />

<Button
    android:id="@+id/imgOpen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left|bottom"
    android:padding="20dp"
    android:text="Flash"
    android:visibility="visible" />

<Button
    android:id="@+id/addText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right|bottom"
    android:padding="20dp"
    android:text="Add Text"
    android:visibility="gone" />

<Button
    android:id="@+id/addPic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center|bottom"
    android:padding="20dp"
    android:text="Add Pic"
    android:visibility="gone" />

<Button
    android:id="@+id/delete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left|bottom"
    android:padding="20dp"
    android:text="Delete"
    android:visibility="gone" />

<Button
    android:id="@+id/save_photo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right|top"
    android:padding="20dp"
    android:text="Save"
    android:visibility="gone" />

</FrameLayout>