リストビューと送信メッセージを下部に持つアクティビティを作成しようとしています。問題は、キーボードが表示されているとき、下部のコンテンツを押すのではなく、単にそれを非表示にしていることです。 adjustPanを使用してみましたが、ホールビューが押し上げられます(そのため、リストビューの上部の要素を表示する方法がなく、アクションバーも消えます)。
WhatsAppまたはLineを見ると、機能は、リストの最後の項目が画面の下部に表示されているときに、キーボードがリストビューを押し上げることです(アクションバーや最初の要素を画面から取り出さずに) )、リストの最後のアイテムが表示されない場合(上にスクロールした後)、キーボードは一番下のリストに表示されません(通常のadjustResize)。
誰もがこの問題に対処しましたか?
ありがとう
編集:
視覚的な例を挙げてみます。
それで、これをリストビューと言いましょう:
---item 1---
---item 2---
---item 3---
---item 4---
---EditText---
EditTextはListViewの一部ではなく、下部に配置されたLinearLayoutです。キーボードが表示されると、ListViewは次のようになります(アイテム3と4はキーボードによって非表示になります)。
---item 1---
---item 2---
---EditText---
---Keyboard---
そして私が得たいのは:
---item 3---
---item 4---
---EditText---
---Keyboard---
私はAndroid:windowSoftInputMode = "adjustPan"を試してみました。その結果、項目3と4が押し上げられ、キーボードで非表示にされなくなりました。問題は、リストビューを押しますが、画面の外に押し出すため、actionBarが消え、上にスクロールしようとしても、キーボードが表示された状態でアイテム1と2が表示されません。
私が説明したことを願っています。
ありがとう
さて、私はあなたのための解決策を見つけました、あなたがしたいことは本質的に毎回一番下にリストビューのスクロールをさせることです。これは次の方法で実行できます。
ListView l = getListView();
l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
l.setStackFromBottom(true);
Activity
の場合は、onCreate
で行います。 Fragment
の場合は、onViewCreated
で行います。
レイアウトXMLで:
Android:stackFromBottom="true"
Android:transcriptMode="normal"
単一行ソリューション
list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);