60

私は自分の問題の解決策をどこでも探しましたが、答えを見つけることができません。ここに問題があります。

私はこのようなレイアウトを持っています

画像はこちら

編集テキスト(検索バー)をクリックすると、次のようになります。

画像はこちら

ソフトキーボードは基本的に画面全体のコンテンツを押し上げて、検索バーが上部にあり、リストビューがその下にあるようにして、コンテンツが検索されたときに結果が表示されるようにする必要があります。マニフェストでに設定android:windowSoftInputMode="adjustPan"してみましたが、うまくいきませんでした。Activityフラグメントを含むメインレイアウトのメインコンテナとしてスクロールビューを設定しましたが、これも機能しませんでした。編集テキスト(検索バー)をヘッダーとしてリストビューに追加しようとしましたが、これも機能しませんでした。キーボードが編集テキストを押し上げたが、リストビューをカバーするたび。これを機能させる方法はありますか?

4

11 に答える 11

76

実際、レイアウト全体を必要以上にパンアップしたい場合は、次のようにします。

SOFT_INPUT_ADJUST_PAN

意味:

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

これにより、キーボードが閉じたままになり、開いたときにアクティビティ全体が押し上げられます。

于 2015-01-18T17:17:46.123 に答える
20

これをフラグメントクラスで使用して、編集テキストを上に移動し、最後までスクロールできます。

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

これは、フラグメントアクティビティテーマがフルスクリーンにない場合に確実に機能します。

これがお役に立てば幸いです。

于 2014-04-17T10:12:42.103 に答える
11

これは私のために働いた。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2014-06-14T14:26:22.507 に答える
10

私は同様の問題に直面しました、解決策は簡単でした。

アクティビティのテーマがフルスクリーンに設定されている場合@android:style/Theme.Holo.NoActionBar.FullScreen、キーボードはコンテンツを押し上げていませんでした。

アクティビティをに変更した後@android:style/Theme.Holo.NoActionBar、キーボードがアクティビティの内容を押し上げています。

于 2012-12-19T18:11:04.487 に答える
10

これを試して

android:windowSoftInputMode="adjustResize"

私のために働いています。

于 2015-10-16T15:08:48.177 に答える
8

android:windowSoftInputMode="adjustResize"マニフェストファイルで試してください。

あなたがする必要があるかもしれませんandroid:windowSoftInputMode="adjustResize|adjustPan"...私は実際にあなたのセットアップに匹敵するものをテストするために持っていません...

あなたの問題はこれが原因です(adjustPanのドキュメントから、私の強調):

アクティビティのメインウィンドウは、ソフトキーボード用のスペースを確保するためにサイズ変更されていません。むしろ、ウィンドウのコンテンツは自動的にパンされるため、現在のフォーカスがキーボードによって隠されることはなく、ユーザーは入力内容を常に確認できます。

そのため、上部のEditTextにフォーカスがあるため、リストが不明瞭になっています。私が現在考えることができる唯一のことは、EditTextをリストの下に移動することです。次に、押し上げたときに、リストがEditTextの上に表示されたままになります。

于 2012-07-02T12:29:20.130 に答える
4

これは私にとってはうまくいきました。フラグメントについては、マニフェストでアクティビティを使用して宣言するだけです。

android:windowSoftInputMode="adjustPan"

幸運を!

于 2016-11-04T10:34:21.407 に答える
3

レイアウトを自動的に変更するための解決策が見つからなかったため、ハックする必要がありました。ここでメインアクティビティで見つけたコードを使用して、キーボードが開いたときを検出しました。キーボードを開いたときに上位2つのフラグメントを非表示にするメソッドを呼び出すコードを追加しました。これは私がやりたかったことではありませんが、機能します。

于 2012-07-04T09:32:07.303 に答える
1

私はこれをEditTextログインに使用します:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

この方法に関する注意事項:

thisgetActivity()常に好ましいとは限らないので、コンテキストを参照しています

.SOFT_INPUT_STATE_HIDDEN  //for default hidden state when activity loads

.SOFT_INPUT_STATE_VISIBLE //for auto open keyboard when activity loads 

毎回動作します!

于 2014-11-23T01:50:34.873 に答える
1

誰かがまだこの問題に直面している場合:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/view"
    android:fitsSystemWindows="true"
    android:layout_height="match_parent">

レイアウトを追加します。

android:fitsSystemWindows="true"

これであなたの問題が解決することを願っています-それは私のために働きました。

于 2016-12-21T10:50:19.337 に答える
0

kotlinの場合:-CreateのアクティビティとCreateViewメソッドのフラグメントにこの行を追加します

activity!!.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2019-12-03T08:40:25.927 に答える