我正在尝试创建一个类似于默认设置应用程序中的
WearableListView
。我有一个 WearableListView
可以滚动,并对每个元素进行动画处理。我现在需要的只是列表顶部的标题,当列表滚动时该标题会向上滚动。这与“设置”应用程序中的“设置”标题具有相同的行为。
我发现执行此操作的唯一方法,此处使用:如何设置 topEmptyRegion 的布局,实现了
WearableListView.OnScrollListener()
。然后使用 onAbsoluteScrollChange()
方法设置用作标题的 TextView
的位移。但是,根据 Android 开发人员参考,此方法已被弃用。文档甚至指出:建议不要使用这个当 RecyclerView 的内容发生变化时,这可能会提供错误的值。
我想知道是否有其他人找到了一种方法来实现具有这种行为的标头,并且该标头未被弃用。可能是我在 Android Wear 文档中遗漏了一些东西?
编辑:
无论如何我都尝试实现这个方法。事实证明,
WearableListView.setOnScrollListener()
不会需要 new WearableListView.OnScrollListener()
。相反,它要求其父级 RecyclerView.OnScrollListener
,而它没有 onAbsoluteScrollChange()
方法。它确实有一个 onScrolled()
方法,我尝试实现它。事实证明,这完全覆盖了 WearableListView
的默认滚动侦听器,并使居中的项目可以偏离中心。绝对不是我想要的效果。
由于 onScroll() 未被弃用,您可以通过在侦听器中实现它来完成相同的任务:
@Override
public void onScroll(int scroll) {
header.setY(header.getY() - scroll);
}
其中
header
是标题组件。
编辑:确保使用
WearableListView.addOnScrollListener
不WearableListView.setOnScrollListener()
wearablerecyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
header.setY(binding.time.getY() - dy);
}
});
刚刚尝试了与上面在可穿戴回收器视图上接受的答案相同的方法 - 效果完美!