键盘出现时不推送adjustPan推送Listview
我正在尝试使用listview和发送消息在底部创建一个活动。 问题是,当显示键盘时,而不是推入底部内容,只是隐藏它。 我尝试过使用adjustPan,但是它将孔视图向上推(所以没有办法看到listview的顶层元素,并且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推上去,而不是被键盘隐藏起来。 问题是它推动了listview,但它将它推出屏幕,所以actionBar消失了,即使试图向上滚动,我也看不到显示键盘的Item 1和2。
希望我解释自己,不是很容易..
谢谢
好吧,我为你找到了一个解决方案,你想要做的就是让ListView每次滚动到底部。 你可以这样做:
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);
链接地址: http://www.djcxy.com/p/24231.html