我的布局如下:
<LinearLayout>
<RelativeLayout>
Some Image and Text as Title
</RelativeLayout>
<RelativeLayout>
<LinearLayout>
<ListView>
My message List
</ListView>
</LinearLayout>
<RelativeLayout>
Edit Box and Send Button
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
显示时,我明确地将当前选择设置为列表的最后一项(最新)。
当没有在底部的编辑框中输入文本时,屏幕看起来像这样:
Top Title
List Item 8
List Item 7
...
List Item 2
List Item 1
Bottom Edit box and Send Button
当我点击编辑框输入我的消息时,屏幕看起来像这样:
Top Title
List Item 8
...
List Item 5
Bottom Edit Box and Send Button
Keyboard
我真正想要的是:
Top Title
List Item 4
...
List Item 1
Bottom Edit Box and Send Button
Keyboard
有人能帮帮我吗?
我在这里找到了答案。
基本上只需使用自定义类扩展ListView,将onSizeChanged()方法重写为setSelection(getCount());
这似乎是最好的解决方案,谷歌语音似乎也使用了同样的策略(因为如果你在聊天列表的顶部,然后旋转屏幕,它会让你回到底部)。
还要记住,在清单中的活动标签中,android:windowSoftInputMode="adjustResize"而不是adjustPan。
你试过这个吗?
您需要在列表中使用setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL)
和setStackFromBottom(true)
。希望它能帮助我,它对我有用!