- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要平滑地滚动到某个位置,然后使用 setSelection(anotherPosition)
“跳”到另一个位置。这样做是为了在 ListView
中创建平滑滚动(例如)100 个项目的错觉。 smoothScrollToPosition(100)
持续时间太长,你知道的。
setSelection()
不会等到 smoothScrollToPositio
n 完成它的工作,所以 setSelection()
会立即被调用,用户会很快看到只跳;
private final int scrollableItems = 20;
int firstVisiblePosition = mListView.getFirstVisiblePosition();
if (firstVisiblePosition < scrollableItems) {
mListView.smoothScrollToPosition(0);
} else {
mListView.smoothScrollToPosition(firstVisiblePosition - scrollableItems);
mListView.setSelection(0);
}
mListView.clearFocus();
好的,我们可以改变平滑错觉的逻辑:首先 setSelection()
,然后平滑滚动(我们滚动到列表顶部的第一个项目):
int firstVisiblePosition = mListView.getFirstVisiblePosition();
if (firstVisiblePosition < scrollableItems) {
mListView.smoothScrollToPosition(0);
} else {
mListView.setSelection(scrollableItems);
mListView.smoothScrollToPosition(0);
}
mListView.clearFocus();
最佳答案
final ListView listView = ...;
View listItemView = ...;
listView.smoothScrollBy(listItemView.getHeight() * NUMBER_OF_VIEWS,
DURATION * 2);
listView.postDelayed(new Runnable() {
public void run() {
listView.smoothScrollBy(0, 0); // Stops the listview from overshooting.
listView.setSelection(0);
}
}, DURATION);
当然,滚动的方向等需要根据您的用例进行调整(转到列表顶部)
编辑:如果滚动速度太高,旧的解决方案可能会过冲,smoothScrollBy(0,0) 将在立即正确设置选择之前停止平滑滚动。
关于android - 等到 ListView smoothScrollToPosition() 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928820/
我已经在 listview 上设置了 smoothScrollToPosition 并且效果很好!但是...我宁愿将位置放在 listview 的顶部,而不是仅仅放在屏幕上(如果需要向下滚动,则主要放
在将元素添加到与 ListView 关联的数组适配器后,我正在尝试平滑滚动到列表的最后一个元素。问题是它只是滚动到一个随机位置 arrayadapter.add(item); //DOES NOT W
在我们的聊天应用程序中,我们使用 RecyclerView 可以包含不同高度的消息。我想用smoothScroll为消息添加动画。我的问题是:当我使用 recyclerView.smoothScrol
我的recycleView有3种类型的viewHolder。 位置 0 是 viewHolder1。 位置1-41是viewHolder2。 位置 42 是 viewHolder3。 但如果 myDa
我使用此函数滚动到水平回收器 View 内的选定位置。问题是,如果我滚动回收器然后单击某个项目,它不会转到 View 的中心。相反,如果我不滚动回收器,它就会起作用。当我单击某个项目时,我正在使用此方
我正在尝试使用 smoothScrollToPosition(int position) 滚动到 ExpandableListView 的底部方法但失败了,因为我不知道如何计算 position 属性
我想检查 smoothScrollToPosition 何时完成滚动回到 recyclerview 的第一项。我试过这样做,只有在 smoothScrollToPosition 仍在滚动时才有效: r
我正在使用一个相当大的布局,其中包括一个 ListView 和一个位于其下方的 LinearLayout 作为页脚。我首先尝试将其包装在 ScrollView 中以使整个布局可滚动,但由于 ListV
我正在尝试创建一个 Recyclerview,它将首先滚动到顶部,然后以动画方式将项目添加到 recyclerview。 这是我目前的代码: while (!mLayoutManage
我有一个 recyclerView,它的每个项目都是一个 recyclerView。我想在特定条件下滚动到内部 recyclerView 的自定义位置。我在 innerRecyclerView 中使用
范围 我需要平滑地滚动到某个位置,然后使用 setSelection(anotherPosition)“跳”到另一个位置。这样做是为了在 ListView 中创建平滑滚动(例如)100 个项目的错觉。
我有一个 ListView ,要求实用地滚动列表。 我正在使用这个。 // allClues.setSelection(clueIndex +1 ); //allClues.setSelectio
当我以编程方式滚动时,我正在尝试为 listView 的滚动设置动画。 是否可以在listView的滚动上设置动画?我在这里浏览了一些答案,没有什么是具体的。 请帮忙!! 最佳答案 我认为您正在寻找类
在 Gingerbread 中,我可以毫无问题地使用 smoothScrollToPosition() 一次滚动几十个项目。在我的 Nexus S 升级到 Ice Cream Sandwich 后,我
使用 smoothScrollToPosition(int position) 函数时,我的 ListView 滚动速度非常快。我想自定义它并让它变慢。 我试过设置 android:fastscrol
我有 RecyclerView 和 LinearLayoutManager(垂直,不是倒置的)。当我将项目插入或移动到 0 位置时,将调用这样的方法: private void scrollToSta
我想转到(显示)我的 ListView 中的特定项目但不滚动。我不想要任何动画,但我希望立即传送到所需的项目。 我正在使用可检查的 ListView :mylistview.setChoiceMode
我有一个回收站 View ,我希望平滑向下滚动,然后以编程方式向上滚动以向用户显示其中的完整内容。 我可以这样做: final int height=recyclerView.getChild
起初我觉得 ListView 的问题很简单。 我以一种非常经典的方式使用它: listView = (ListView) view.findViewById(R.id.myid); listView.
我有一个用于 ListView 设置的自定义适配器,并且工作正常。在单击按钮时,基础数据中的某些内容发生了变化,因此需要 notifyDataSetChanged 来刷新 ListView。美好的。但
我是一名优秀的程序员,十分优秀!