我正在尝试在 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 上都使其正常工作?
我想让 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 上都使其正常工作?