web-dev-qa-db-ja.com

Android:ソフトキーボードの上のボタンを押す方法

ソフトキーボードと一緒に押し上げたい「保存」ボタンがあります。そのため、ユーザーがレイアウトのEditTextをクリックすると、ボタンはキーボードの上に留まる必要があります。これで、ボタンがキーボードの下に隠れます。これどうやってやるの?

前もって感謝します!

44
Xander

キーボードの入力モードをadjustResizeに設定する必要があります。これを行うと、次の行をマニフェストのアクティビティの属性に追加できます。

    Android:windowSoftInputMode="adjustResize"

アクティビティに追加された属性の例を次に示します。

<activity 
     Android:name=".activity.MyActivity"
     Android:windowSoftInputMode="adjustResize">
</activity>
92
Intathep

Inthathepの答えに加えて、親ビューグループに属性を追加する必要があります

Android:fitsSystemWindows="true"

必要に応じて動作します。つまり、マニフェストファイルで、アクティビティを追加します

Android:windowSoftInputMode="adjustResize"

など。

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="10dp"
    Android:fitsSystemWindows="true" <!-- add this -->
    Android:orientation="vertical"
    >
    <EditText
        Android:id="@+id/et_assetview_comment"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:minHeight="80dp"
        Android:background="@color/white"
        Android:hint="Enter comments"
        />
    <Button
        Android:id="@+id/btn_assetview_postcomment"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="POST"
        />
</LinearLayout>
26
oneavi

このようにレイアウトを注文すると、キーボードの上にボタンを配置できます

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    >

    <ScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_above="@+id/button_next"
        Android:background="#0ff"
        >

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical"
            >

            <EditText
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="250dp"
                Android:hint="Hint"
                />

            <TextView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="ABC"
                Android:textSize="50sp"
                />
        </LinearLayout>
    </ScrollView>

    <Button
        Android:id="@+id/button_next"
        Android:layout_width="match_parent"
        Android:layout_height="60dp"
        Android:layout_alignParentBottom="true"
        Android:layout_margin="10dp"
        Android:text="Button Next"
        />

</RelativeLayout>

In Android manifest

<application
        ...
        >
        <activity Android:name=".YourActivity"
            Android:windowSoftInputMode="adjustResize"
           >
        </activity>
</application>

enter image description here

RelativeLayoutの代わりに、別のViewGroupを使用することもできることに注意してくださいLinearLayout with weight、CordinatorLayout、...

13
Phan Van Linh

だから、これはかなり古い投稿ですが、提供された答えに苦労しました。 oneaviとIntahepはどちらも正しいですが、Android:windowSoftInputMode="adjustResize"行く。

in Android Manifest

    <activity Android:name=".DataScreen" />
    <activity Android:name=".PauseScreen" />
    <activity Android:name=".RouteInfo"
               Android:windowSoftInputMode="adjustResize"> <!--This goes in the specific activity with the button -->
    </activity>
6
Nathan O'Kane

最良の方法は、キーストロークを非表示にし、必要に応じてキーボードの上のボタンを押すことです

 Android:windowSoftInputMode="adjustResize|stateHidden"
1
iman hoshmand