Android可选择项背景长按没有发光效果

8
我正在尝试在 Android 应用程序中使用 RecyclerView。我将 RecyclerView 示例项目导入到 Android Studio 中,它工作得很好。
我想让 RecyclerView 中的项目在用户长按时产生视觉反应。为了做到这一点,我将视图的背景设置为 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 模拟器上运行修改后的示例,则在长按 RecyclerView 中的项时会出现漂亮的波纹效果。
但是,如果在 KitKat 模拟器上运行应用程序,则没有 KitKat 所带的发光效果。在我长按列表项时,列表项会变暗,而长按点击监听器确实会运行,但我希望颜色在长按的同时会发光。
以下是我看到的 Gif 图片:
![long press animation not working](https://istack.dev59.com/jWw1O.gif)
为什么 selectableItemBackground 在 KitKat 上不会产生发光效果?如何在 KitKat 和 Lollipop 上都使其正常工作?
2个回答

3

使用

  android:background="?attr/selectableItemBackground"
  android:backgroundTint="@android:color/holo_blue_bright"
  android:clickable="true"

在您的RecyclerView行布局中


这个不起作用。如果我将这些属性添加到FrameLayout标记中,什么也不会发生。在KitKat上仍然会出现相同的行为(长按没有动画)。 - Ove
clickable="true" 对我的情况起作用了,谢谢!但仍未解决主题所有者的问题。 - Bruce

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接