2016-09-27 102 views
2
我的問題

最好的說明是在防止鍵盤佈局隱藏工具欄,但顯示滾動內容

Keyboard layout hiding android action bar?

我會貼引號的位置: 「我有這個問題,也可是不同的是,我在edittext上面有一個列表,不能使用滾動容器,如果在edittext聚焦的時候使用adjustResize,它會出現在列表的上方,列表中最後的項目會被遮擋(列表不會被推上去)另一方面,使用adjustResize時,當edittext被集中時,它會將所有東西都拉出來,但是acionbar是隱藏的,我也不能滾動到列表的頂部。一個共享這個解決方案?

enter image description here enter image description here

所以

  • 我有一個工具欄
  • 然後聊天內容
  • ,然後將消息發送底杆(EDITTEXT和按鈕)

現在,當我點擊一個ediText,並且軟鍵b打開時,我不希望我的工具欄崩潰並隱藏,但我確實希望我的聊天內容向上滾動,因此,在底部條目上方,我將看到最後一條消息聊天內容(在listView中)。

我已經嘗試了一些活動adjustResize或adjustPan的組合,但他們都沒有工作。甚至包裹在CoordinatorLayout和AppBarLayout中的工具欄,但仍然沒有結果。要麼我的內容被正確推送/滾動,但工具欄隱藏或工具欄保持不變,但softKeyboard與最後幾條消息重疊。

我分享的解決方案是一種解決方法。我已經實現了一個函數scroll(),在新消息到達時滾動我的內容,這是我之前實現的一個函數。我錯過了另一部分,那就是檢測softKeyboard何時打開,以便滾動我的內容。

這是很容易找到這裏 How to check visibility of software keyboard in Android?

我希望有人會發現這個解決辦法有用,至少睡了幾個小時。

注意: 滑動內容的動畫與softkeyboard滑動不一致。鍵盤打開後,我做滾動,這是不同步的。這只是一個單元。但直到我找到一個更好的解決方案來使用本機Android組件或佈局編排此事件時,我纔會關心這一點。

回答

0

所有上述的最簡單有效的解決方法是簡單地使用以下命令:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);