2013-04-21 66 views
33

我想創建一個帶有列表視圖和底部發送消息的活動。問題是,當顯示鍵盤時,而不是推入底部內容,只是隱藏它。我嘗試過使用adjustPan,但是它將孔視圖向上推(所以沒有辦法看到listview的頂層元素,並且de actionbar消失)。當鍵盤出現時沒有adjustPan推送ListView

如果您看一下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推起並且不再被鍵盤隱藏。問題是它推動了listview,但它將它推出屏幕,所以actionBar消失了,即使試圖向上滾動,我也看不到顯示鍵盤的Item 1和2。

希望我解釋我自己,不是很容易的..

感謝

+1

你可以張貼的什麼樣子目前,它不是很清楚,我的問題是什麼的屏幕截圖。 – wangyif2 2013-04-21 22:31:33

+0

我已經添加了一個示例來嘗試解釋。謝謝 – Mehdi 2013-04-23 01:25:35

回答

50

好吧,我已經找到你的解決方案,你想做的事基本上每次都ListView控件滾動至底部。你可以這樣做:

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

如果是Activity,做到在onCreate。如果是Fragment,請在onViewCreated中執行。

+2

嗨,謝謝。它實際上將listView滾動到底部。問題是,當我向上滾動列表視圖,然後顯示鍵盤時,它再次將列表視圖滾動到底部。這會讓用戶放鬆他看到的物品。就像一個例子看看你的whatsapp/LINE應用程序,如果你有它。當你打開它時,列表視圖在最下面,顯示鍵盤,你仍然看到最後一個項目,移除鍵盤並向上滾動,然後再次顯示鍵盤,列表視圖不會滾動到底部......再次感謝 – Mehdi 2013-04-23 18:24:53

+0

啊,我明白你想要什麼,我已經更新了答案,並進行了測試,應該完全按照你的說法去做。請接受它是否也爲您解決。 – wangyif2 2013-04-23 18:30:46

+2

該死的。我無法相信所有失去的時間xD。謝謝 – Mehdi 2013-04-23 18:36:08

14

在你的佈局XML:

android:stackFromBottom="true" 
android:transcriptMode="normal" 
+0

android:stackFromBottom =「true」不需要 – NarendraJi 2015-12-30 08:54:54

0

單線解決方案

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);