ソフトキーボードが表示されているときにレイアウトを上に移動する方法android


85

EditTextsレイアウトに2つのログイン画面とログインボタンがあります。問題は、入力を開始すると、ソフトキーボードが表示され、ログインボタンが覆われていることです。レイアウトが表示されたら、キーボードの上または上にレイアウトをプッシュするにはどうすればよいですか?

を使用したくないので、ScrollView下にスクロールせずに実装したいだけです。何か方法を教えてください。前もって感謝します。

回答:


59

windowSoftInputModeプロパティをadjustPanとに設定しますadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

32
これはそのままでは機能しませんでしたが、機能するように変更<activity android:windowSoftInputMode="adjustResize"></activity>しました。
nickiaconis 2014

2
使用しているAndroidのバージョンを記載してください。一部のバージョンでは、一部の回答がまったく役に立たない場合があります。
Josh

@nickiaconisが言ったように、「adjustPan」パラメーターは必要ありません。それは私のために機能します、ありがとう
danisupr4 2016

Xamarin.Formsポータブルプロジェクトで利用できる同等のものはありますか?したがって、個々のターゲットプラットフォームごとにこれを行う必要はありません。
user20358 2016年

6
設定は、次の表にリストされている値の1つ、または1つの「状態...」値と1つの「調整...」値の組み合わせである必要があります。いずれかのグループに複数の値を設定すると(たとえば、複数の「状態...」値)、結果は未定義になります。developer.android.com/guide/topics/manifest/...
EmJiHash

34

アクティビティに対応するAndroidマニフェストファイルでこれを試してください。

<activity android:windowSoftInputMode="adjustPan"> </activity>

1
私の忠誠心は最初に上に移動しますが、キーボードを閉じて再び開いたときは移動しません。
nabeghe 2016

24

onCreate()メソッドで次のコードを使用します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

1
おかげで、それは助けになりました。<activity android:windowSoftInputMode = "adjustPan"> </ activity>が何らかの理由で機能しませんでした。
DH28 2016

1
この方法ですがSOFT_INPUT_ADJUST_RESIZE、ADJUST_PANの代わりに使用すると、うまくいきました
Voy

16

のみ

android:windowSoftInputMode="adjustResize"

マニフェストファイル内のアクティビティタグでトリックを実行します


ConstraintLayoutを使用していますが、このソリューションは機能しません。
カランシャルマ

この回答を書いている時点では、AndroidレイアウトにConstraintLayoutは追加されていません。このスレッドであなたに最適な他の解決策を見つけてください。そして確かに、時間が取れたらConstraintLayoutの答えを更新します。報告してくれてありがとう
BhargavThanki19年


10

デバイスのソフトキーボードのステータスを知ることで、どういうわけかこれを達成しました。キーボードが表示されている場合はレイアウトをy位置に移動し、表示されていない場合は元の位置に戻します。これは正常に機能し、このガイドラインに従いました。


2
キーボードが表示されているときにレイアウトを上に移動することはできますが、キーボードが非表示になっている間は元の位置に移動できません。これを手伝ってくれませんか。
Kishore 2012

9
android:fitsSystemWindows="true"

レイアウトファイルのメインレイアウトにプロパティを追加し、

android:windowSoftInputMode="adjustResize"

ActivtyのManifest.xmlファイルに行を追加します

私にとっては完璧な仕事です。


fitsSystemWindowsはキーボードとは何の関係もありません
Tim

@TimCastelijns、私の場合(フルスクリーンアクティビティ)は問題があります。に設定するとfalse、ビューは上に移動しません。
CoolMind

6

これをマニフェストファイルのアクティビティ宣言に入れます <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

または、必要に応じて、アクティビティのonCreate()メソッドを追加できます

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

1
マニフェストのコードが間違っている、動作は未定義である。この方法は、(:あなたは2つの競合値を設定し、offdoc参照developer.android.com/guide/topics/manifest/...android:windowSoftInputMode説明を)。@ kiwicomb123、1つのパラメーターを選択するか、システムが選択します(この選択は、別のデバイス/ API検証で変更される可能性があります)
kpower 2017

3

必要なのはこれだけです。

<activity android:windowSoftInputMode="adjustResize"> </activity>

2

このガイドに従って、これを達成する正しい方法は、マニフェストで宣言することです。

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>

stateVisibleを使用すると、アクティビティの開始時に開くように見えるため、実際にキーボードを押し上げる必要はありません。
CodyEngel 2017年

2

ソフトキーボードが表示されると、メインレイアウトのサイズが変更されます。必要なのは、そのメインレイアウトのリスナーを作成し、そのリスナー内にコードscrollT0(x,y)を追加して上にスクロールすることです。


2

xamarinを使用している場合は、このコードWindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResizeをMainActivityクラスのアクティビティ属性に配置できます 。たとえば、アクティビティ属性は次のようになります

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }

0

相対レイアウトを使用すると、テキストを入力しているときにそのビューが表示されるようにビューが調整されます


0

これは私にとって魅力のように機能します

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

あなたは使用する必要があります

android:windowSoftInputMode="adjustPan|stateHidden"

あなたの中AndroidManifest.xmlのファイル、あなたの活動を宣言しているところ。これにより、キーボードがレイアウトに表示されているときに、レイアウトの内容が調整されます。


-2

これは間違いなくあなたのために働くでしょう。

android:windowSoftInputMode = "adjustPan"


1
説明をお願いします…?
chevybow 2018

AndroidManifest.xmlファイルに移動し、このタグをキーボードのポップアップで上にスクロールしたいアクティビティに移動します
sanjay kumar 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.