0
我正在開發聊天應用,我希望我的ListView
在用戶發佈新消息時以及當用戶位於列表底部並收到新消息時滾動到底部。我用這ListView
:Android ListView滾動到底部
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:divider="@null"
android:dividerHeight="0dp"
android:stackFromBottom="true"
android:paddingBottom="9dp"
android:clipToPadding="false"/>
而且此方法強制滾動需要時:
private void scrollListViewToBottom() {
listView.setSelection(adapter.getCount() - 1);
}
但是,當聊天包含高度大於屏幕高度則滾動到更大的元素(大文本或圖像)它的頂部。我需要我的ListView
滾動到底部,而不是最後一個元素。
我試圖使用listView.scrollTo(0, listView.getBottom())
方法,但結果很奇怪 - 它有時會滾動到最後一條消息+半屏幕間隙,有時會滾動到我看不到任何消息的地方。
任何想法?謝謝。
'notifyDataSetChanged()'僅在一些常用的子類中實現,並且在ListAdapter或其他純粹的實現中不可用。 – bukkojot
我使用'notifyDataSetChanged()'作爲另一個用途,每次執行它時都不需要滾動。感謝1像素大小的元素的幫助,這應該工作。但這聽起來並不是100%的好解決方案。如果不添加一些額外的元素,是否真的沒有辦法做到這一點? –
有時候黑客是唯一的方法:) –