gpt4 book ai didi

android - 如何禁用 android ListView 中的过度滚动和弹跳?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:02:23 24 4
gpt4 key购买 nike

我的 ListView 在 2 台设备上的行为是,当我过度滚动它时它会变成黄色/橙色,或者它可以过度滚动然后快速返回。后一种行为是不好的,因为它显示了我想要阻止的背景。

我试过:

listview.setOverScrollMode(ListView.OVER_SCROLL_NEVER);

它不再显示背景,但现在有一个非常烦人的弹跳效果。是否可以同时禁用弹跳和过度滚动,并使其在滚动结束时结束而没有任何影响?

PS:我在两台设备上都使用 android 2.3。

最佳答案

这是我解决这个问题的方法,希望它能帮助那些正在搜索的人。关键是将 OnScrollListener 附加到列表,跟踪何时处理滑动手势以及何时到达列表末尾。然后,当 fling 仍在继续时,如果系统试图移动它,请继续将位置重置到最后。

private ListView mListView;
private ListAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list);

mListView = (ListView) findViewById(R.id.listView);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getList(25));
mListView.setAdapter(mAdapter);
mListView.setOverScrollMode(View.OVER_SCROLL_NEVER);
if(Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD || Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1){
mListView.setOnScrollListener(new OnScrollListener(){
private boolean flinging = false;
private boolean reachedEnd = false;

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
flinging = (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING);
reachedEnd = false;
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(reachedEnd && flinging && (firstVisibleItem + visibleItemCount < totalItemCount)){
mListView.setSelection(mAdapter.getCount() - 1);
}else if(firstVisibleItem + visibleItemCount == totalItemCount){
reachedEnd = true;
}else{
reachedEnd = false;
}

}

});
}

}

关于android - 如何禁用 android ListView 中的过度滚动和弹跳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com