Android selectableItemBackground长按

时间:2015-07-12 11:23:45

标签: android android-recyclerview

我正在尝试在Android应用中使用RecyclerView。 我将RecyclerView示例项目导入Android Studio,它运行正常。

我想让回收者视图中的项目在用户长时间按下时进行视觉反应。为此,我将视图的背景设置为selectableItemBackground。我做了这些修改:

  • 在text_row_item.xml中,我在FrameLayout标记上添加了这一行:

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

  • 在CustomAdapter.java中,我在FrameLayout上添加了一个长按监听器:

    v.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Log.d(TAG, "Element " + getPosition() + " long clicked."); return true; } });

如果我在Lollipop仿真器上运行修改过的样本,当我长按回收器视图中的项目时,会得到很好的连锁效果。

但是如果我在KitKat模拟器上运行应用程序,我就无法获得KitKat附带的发光效果。当我长按它时,列表中的项目会变暗,并且长按聆听器会运行,但我预计在长时间按下时颜色会发光。

这是我正在发布的一个gif: long press animation not working

为什么selectableItemBackground没有在KitKat上运行发光效果?如何让它在KitKat和Lollipop上运行?

2 个答案:

答案 0 :(得分:3)

使用

  android:background="?attr/selectableItemBackground"
  android:backgroundTint="@android:color/holo_blue_bright"
  android:clickable="true"
在你的recyleview行布局中

答案 1 :(得分:0)

当我使用android:Theme.Holo.Light.DarkActionBar样式时,我遇到了同样的问题。将其更改为android:Theme.Material.Light.DarkActionBar后,涟漪效应正常。

所以我唯一需要做的就是添加:

android:theme="@android:style/Theme.Material.Light.DarkActionBar

到Manifest.xml中的application节点

或者,如果您使用自定义styles.xml,则可以使用parent="android:Theme.Material.Light.DarkActionBar"