android - 在 RecyclerView 上设置 alpha 但未选择子级 (Kotlin)
问题描述
我正在寻找一种方法来设置 RecyclerView 的所有元素的 alpha 而不迭代元素。
基本上我可以设置整个回收器的 alpha 并且所有子级都将继承该 alpha,但是当我更新所选子级的 alpha 时,它仍然从其父级继承该值,而不是更新它自己的 alpha 值。所有这些都必须在单击具有以下 clickListener 的项目时发生。
// it is the view on which the listener is called that belongs to the recycler
private val click = View.OnClickListener {
recycler.alpha = 0.2f
it.alpha = 1f
}
我检查了该项目是否被正确选择并且 clickListener 被调用。问题似乎是 alpha 是从 parent 继承的,ViewGroup
但在官方文档中我找不到任何关于无法更改 child 中继承的 alpha 值的信息view
。
我错过了什么?如果设置父级的 alphaViewGroup
是不行的,有没有办法避免遍历所有元素并为每个元素设置 alpha 值?
解决方案
它不是继承的——孩子被画成父母的一部分。因此,由于整个父级都具有该 alpha,因此子级是使用该 alpha 绘制的。将孩子的 alpha 设置为0.2f
将使该孩子更加透明。
您最好的选择可能是在您的 RecyclerView.Adapter 子类的onBindViewHolder
方法中正确设置 alpha,并通过更改支持数据和notify...
方法来更改 alpha。尝试在适配器之外更改 RecyclerView 子视图是自找麻烦,因为 RecyclerView 不会知道它们,并且可能会更改您的内容,添加更多视图等。
推荐阅读
- sql - 如何缓存独立于应用程序的 sql 数据库映射
- javascript - 不变违规:元素类型无效:需要一个字符串。(图像错误)
- javascript - 一个 HTML 页面中的多个 jQuery 脚本不能一起工作
- c - 我希望使用一个信号量值输出 1 2 3 4。如何做到这一点?
- python - 使用 xmltodict python 解析 XML 文档时出错
- javascript - 将 Immer 与 NgRx 减速器集成
- node.js - Nodejs:续集和json
- python - 在 Matplotlib 中并排绘制等高线图?
- java - 扫描完我的二维码后转到下一个活动
- python - 如何删除带有条件的python数据框中的行?