RecyclerView onclick 侦听器在点击动画完成之前触发
RecyclerView onclick listener fires before click animation completes
我在玩新的 RecyclerView
。和 运行 分为几个问题:
- 我注意到它不支持点击监听器;我通过为每个列表项添加一个点击侦听器来解决这个问题。 (RecyclerView onClick)
- 当一个列表项被点击时,它不会显示棒棒糖漂亮的点击动画;我通过将以下属性添加到列表项 XML 来修复该问题:
android:background="?android:attr/selectableItemBackground"
(RecyclerView onItemClick effect in L)
- 我的实际问题:当我点击RecyclerView中的列表项时,立即通知监听器;我不喜欢这样,因为在点击侦听器转到下一个 activity 或其他东西之前,用户无法看到点击动画完成。
如何让 RecyclerView 在被点击时表现得更像 ListView,以便用户能够在通知点击侦听器之前看到点击动画完成?
我知道我可以通过使用 View.postDelayed
简单地解决这个问题,但这似乎不是最好的解决方案,因为在延迟期间,用户可能可以单击更多列表项。
下面是一个 link 到一个 android 工作室项目的存储库,该项目有一个 ListView
和 RecyclerView
并排以帮助演示问题:https://github.com/ericytsang/question.listview-vs-recyclerview
非常感谢!
我遇到了同样的问题。我正在处理片段并在单击列表项时替换片段,但没有显示点击动画。因此,我用启动另一个 Activity 的代码替换了片段代码,这解决了我的问题。你说在点击监听器进入另一个 "activity or something" 之前动画还没有完成,但对我来说有效。
代替这个
NewFragment newFragment = NewFragment.newInstance();
FragmentTransaction ft = (getFragmentManager()).beginTransaction();
ft.replace(R.id.fragment_container, newFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
我用这个
Intent transitionIntent = new Intent(getActivity(), DetailActivity.class);
startActivity(transitionIntent);
我在玩新的 RecyclerView
。和 运行 分为几个问题:
- 我注意到它不支持点击监听器;我通过为每个列表项添加一个点击侦听器来解决这个问题。 (RecyclerView onClick)
- 当一个列表项被点击时,它不会显示棒棒糖漂亮的点击动画;我通过将以下属性添加到列表项 XML 来修复该问题:
android:background="?android:attr/selectableItemBackground"
(RecyclerView onItemClick effect in L) - 我的实际问题:当我点击RecyclerView中的列表项时,立即通知监听器;我不喜欢这样,因为在点击侦听器转到下一个 activity 或其他东西之前,用户无法看到点击动画完成。
如何让 RecyclerView 在被点击时表现得更像 ListView,以便用户能够在通知点击侦听器之前看到点击动画完成?
我知道我可以通过使用 View.postDelayed
简单地解决这个问题,但这似乎不是最好的解决方案,因为在延迟期间,用户可能可以单击更多列表项。
下面是一个 link 到一个 android 工作室项目的存储库,该项目有一个 ListView
和 RecyclerView
并排以帮助演示问题:https://github.com/ericytsang/question.listview-vs-recyclerview
非常感谢!
我遇到了同样的问题。我正在处理片段并在单击列表项时替换片段,但没有显示点击动画。因此,我用启动另一个 Activity 的代码替换了片段代码,这解决了我的问题。你说在点击监听器进入另一个 "activity or something" 之前动画还没有完成,但对我来说有效。
代替这个
NewFragment newFragment = NewFragment.newInstance();
FragmentTransaction ft = (getFragmentManager()).beginTransaction();
ft.replace(R.id.fragment_container, newFragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
我用这个
Intent transitionIntent = new Intent(getActivity(), DetailActivity.class);
startActivity(transitionIntent);