web-dev-qa-db-ja.com

キーボードが表示されているときにレイアウト全体を上に移動するにはどうすればよいですか?

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:orientation="vertical"
    Android:layout_height="match_parent">

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

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" />

        <Button
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" /> 
        </LinearLayout>    

</FrameLayout>  

マニフェスト:

 Android:windowSoftInputMode="adjustPan"

初期動作:

enter image description here

現在の動作:

enter image description here

望ましい動作:

enter image description here

レイアウトの望ましい動作を実現する方法は? adjustResizeこのオプションはレイアウトのサイズを変更するため、不適切です。

回答ありがとうございます!

20
Sinigami

あなたはおそらく この答え を見てみたいと思うでしょう。それからの提案:

Window SoftInputModeプロパティをadjustPanおよびadjustResizeに設定します

<activity Android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
4
Andrew Orobator

その結果を得る唯一の方法は、レイアウトのサイズ変更です。 Android:windowSoftInputMode = "adjustResize"を使用する

2
dledo

マニフェストでこれを試してください:

Android:windowSoftInputMode="adjustResize|stateUnchanged"
2
No Name

これを行う簡単な方法があるとは思いません。少なくとも、フラグを設定するほど簡単ではありません。キーボードを、選択したEditTextよりもはるかに低いビューのレベルまで上げたいという同様の状況がありました。私はこの答えを使用することになりました: Androidでソフトウェアキーボードの可視性を確認する方法は?

キーボードが表示されたら、ビューサイズを手動で調整します。

1
Graydyn Young

アクティビティから下の行を削除し、マニフェストからAndroid:windowSoftInputModeを削除することで、以前は隠れていたレイアウト全体のスクロールを取得しました

this.getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN、WindowManager.LayoutParams.FLAG_FULLSCREEN);

この出力ビデオリンクを確認してください: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk

1
Chirag Jain

editTextとButtonを含むレイアウトがRelativeLayoutであるかどうかを確認します。

1
Liran Peretz

FrameLayoutalignParentBottom="true"プロパティを使用してRelativeLayoutLinearLayoutに変更してみてください。

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:orientation="vertical"
    Android:layout_height="match_parent">

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

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" />

        <Button
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" /> 
        </LinearLayout>    

</RelativeLayout>  
1
rom4ek

公式ガイド から、adjustPanでそれを実装することはできません。

アクティビティのメインウィンドウは、ソフトキーボード用のスペースを確保するためにサイズ変更されていません。むしろ、ウィンドウの内容が自動的にパンされるため、現在のフォーカスがキーボードによって隠されることはなく、ユーザーは入力内容をいつでも確認できます。これは、ウィンドウの隠された部分にアクセスして操作するために、ユーザーがソフトキーボードを閉じる必要がある場合があるため、通常、サイズ変更よりも望ましくありません。

Buttonが現在のフォーカスを下回っていますEditText

1
gio

このプロパティをアクティビティで使用するだけです

Android:windowSoftInputMode="adjustPan"
0
Harv