35

リストビューと下部にメッセージを送信するアクティビティを作成しようとしています。問題は、キーボードが表示されているときに、下部のコンテンツを押すのではなく、単に非表示にすることです。私はadjustPanを使用してみましたが、穴のビューを押し上げます(そのため、リストビューの一番上の要素を表示する方法がなく、アクションバーも消えます)。

WhatsAppまたはLineを見ると、リストの最後の項目が画面の下部に表示されると、キーボードがリストビューを押し上げます(アクションバーや最初の要素を画面から取り出すことなく)。 )、リストの最後の項目が表示されていない場合(上にスクロールした後)、キーボードは一番下のリストに表示されません(通常のadjustResize)。

この問題に対処した人はいますか?

ありがとう

編集:

視覚的な例を挙げてみます:

だから、これをListViewとしましょう:

---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が表示されたキーボードで一向に見えません。

私が自分自身を説明したことを願っていますが、本当に簡単ではありません..

ありがとう

4

3 に答える 3

54

さて、私はあなたのための解決策を見つけました。あなたがしたいことは、本質的にListViewを毎回一番下までスクロールさせることです。これは次の方法で実行できます。

ListView l = getListView();
l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
l.setStackFromBottom(true);

の場合はActivityで行いonCreateます。の場合はFragmentで行いonViewCreatedます。

于 2013-04-23T17:23:51.293 に答える
13

レイアウト XML で:

android:stackFromBottom="true"
android:transcriptMode="normal"
于 2014-01-08T14:28:51.027 に答える
1

単線ソリューション

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
于 2015-08-11T10:06:58.490 に答える