RecyclerView onItemClick效果在L中

San*_*dra 24 android-recyclerview

也许之前已经提出过这个问题,但我找不到准确的答案.我已经RecyclerView在我的L测试应用程序中将小部件实现为列表,并且当您单击列表中的项目时我想获得"材料效果".我onClickListener在我的ViewHolder创建中实现了一个并设置了属性

android:background="?android:attr/selectableItemBackground"

作为我的列表项布局的背景(到父级).

但这一切都没有奏效.当我点击没有发生的项目'.没有效果,全息,材料,没有...请指出我在这里做错了什么......谢谢

Mic*_*cro 41

桑德拉的回答对我不起作用.我的列表项布局中还需要一个属性:

android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
Run Code Online (Sandbox Code Playgroud)

注意:如果在最后一行粘贴时出现错误,那么您的Android应用程序将在版本10或更低版本上设置.只需右键单击Android Studio中的错误并进行设置,即可创建v11版本的布局.然后,在原始布局中,确保删除

android:background="?android:attr/selectableItemBackground"`
Run Code Online (Sandbox Code Playgroud)

这是因为在Android或更低版本的v10版本中不支持动画.设置这两个布局文件后,动画将在v11 +版本的Android中正确显示,当然它不会在较低版本中显示.

(或者只是将应用的minSdkVersion版本增加到10以上)

  • 我没有在我的问题的答案中放置android:background ="?android:attr/selectableItemBackground",因为我在我的问题本身中解释过,我已经在代码中实现了它...对不起混淆 (2认同)
  • setFocusable(true)在这里是不必要的,只要项目可以进入"焦点项目"的状态并获得灰色背景,实际上就是过多.即使没有设置此属性,涟漪效果也会起作用 (2认同)

San*_*dra 37

我犯了一个愚蠢的错误并没有放

android:clickable="true"
android:focusable="true"
Run Code Online (Sandbox Code Playgroud)

到我的列表项目布局.我认为这不是前L所必需的,但这并不重要,因为在这种情况下这是问题.