键盘出现时没有adjustPan推送列表视图

时间:2013-04-21 16:54:51

标签: android android-listview android-softkeyboard

我正在尝试使用listview创建一个活动,并在底部发送一条发送消息。问题是,当显示键盘时,而不是推动底部内容,只是隐藏它。我尝试使用adjustPan,但它会向上推孔视图(因此无法查看列表视图的顶部元素以及de actionbar消失)。

如果你看看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项。

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

由于

3 个答案:

答案 0 :(得分:53)

好的,我已经为您找到了解决方案,您想要做的事情实际上是每次都将ListView滚动到底部。您可以通过以下方式执行此操作:

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

如果是Activity,请在onCreate中执行。如果是Fragment,请在onViewCreated中执行。

答案 1 :(得分:13)

在你的布局XML中:

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

答案 2 :(得分:1)

单线解决方案

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);