Max*_*me 150 android android-listview
如何以编程方式滚动到某个特定位置ListView?
例如,我有一个String[] {A,B,C,D....},我需要将顶部可见项设置ListView为我的索引21 String[].
Han*_*oit 380
对于直接滚动:
getListView().setSelection(21);
Run Code Online (Sandbox Code Playgroud)
为了平滑滚动:
getListView().smoothScrollToPosition(21);
Run Code Online (Sandbox Code Playgroud)
ama*_*Bit 61
getListView().smoothScrollToPositionFromTop(position,offset,duration);
参数
position - >滚动到
偏移的位置---->滚动完成时从视图顶部到位的所需距离(以像素
为单位)duration->滚动使用的毫秒数
注意:来自API 11.
HandlerExploit的回答是我正在寻找的,但我的listview非常冗长,并且还有字母滚动条.然后我发现同样的功能也可以采取其他参数:)
编辑:(来自AFDs建议)
要定位当前选择:
int h1 = mListView.getHeight();
int h2 = listViewRow.getHeight();
mListView.smoothScrollToPositionFromTop(position, h1/2 - h2/2, duration);
Run Code Online (Sandbox Code Playgroud)
Mel*_*pes 10
将代码放在处理程序中,如下所示,
public void timerDelayRunForScroll(long time) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
try {
lstView.smoothScrollToPosition(YOUR_POSITION);
} catch (Exception e) {}
}
}, time);
}
Run Code Online (Sandbox Code Playgroud)
然后调用这个方法,如,
timerDelayRunForScroll(100);
Run Code Online (Sandbox Code Playgroud)
干杯!!!
小智 7
该Listview卷轴将被定位在默认情况下到上,而是要滚动,如果不可见的再使用这样的:
if (listView1.getFirstVisiblePosition() > position || listView1.getLastVisiblePosition() < position)
listView1.setSelection(position);
Run Code Online (Sandbox Code Playgroud)
小智 6
我已设置OnGroupExpandListener并覆盖onGroupExpand(),如下所示:
并使用setSelectionFromTop()方法设置所选项目并从ListView的上边缘定位选择y像素.(如果处于触摸模式,该项目将不会被选中,但它仍将被正确定位.)(android docs)
yourlist.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener()
{
@Override
public void onGroupExpand(int groupPosition) {
expList.setSelectionFromTop(groupPosition, 0);
//your other code
}
});
Run Code Online (Sandbox Code Playgroud)
使用 UP/Down using.button 处理 listView 滚动
如果有人有兴趣使用按钮处理 listView 向上/向下一行。然后。
public View.OnClickListener onChk = new View.OnClickListener() {
public void onClick(View v) {
int index = list.getFirstVisiblePosition();
getListView().smoothScrollToPosition(index+1); // For increment.
}
});
Run Code Online (Sandbox Code Playgroud)
如果有人在寻找类似功能的Gmail应用程序,
默认情况下,Listview滚动条将位于顶部。感谢您的提示。amalBit。减去它即可。而已。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
int h1 = mDrawerList.getHeight();
int h2 = header.getHeight();
mDrawerList.smoothScrollToPosition(h2-h1);
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你想直接跳转到 listView 中所需的位置,只需使用
listView.setSelection(int position);
如果你想平滑地跳转到 listView 中所需的位置,只需使用
listView.smoothScrollToPosition(int position);
| 归档时间: |
|
| 查看次数: |
160132 次 |
| 最近记录: |