在我的应用中,我与listview聊天活动。我决定使用onConfigurationChanged来保留带有消息的listview,同时用户更改屏幕方向。问题是每次都会重置滚动位置。我如何保持我的滚动位置列表视图。 在清单
<activity
android:name=".ChatActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
/>
活动
@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d(TAG, "orientation changed");
chatView.setSelection(scrollPosition);
}
答案 0 :(得分:0)
删除它:
chatView.setSelection(scrollPosition);
[编辑]
//Save state
Parcelable state = listView.onSaveInstanceState();
//Restore state
listView.onRestoreInstanceState(state);
[EDIT2]:
//Save
int index = mList.getFirstVisiblePosition();
View v = listView.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());
//Restore
listView.setSelectionFromTop(index, top);
答案 1 :(得分:0)
如果你写聊天,你可能为listview transcript mode = ALWAYS_SCROLL
添加了 msgListView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
此模式在屏幕旋转后将listview滚动到底部。 轮换后,评论和列表位置将保留。
滚动模式您可以更改为强制移动到列表末尾,如下所示:
chatAdapter.notifyDataSetChanged();
int pos = msgListView.getCount()-1;
msgListView.setSelection(pos);