如何获取所有在 tag 属性中具有值的视图?
Posted
技术标签:
【中文标题】如何获取所有在 tag 属性中具有值的视图?【英文标题】:How can I get all views that have value in the tag attribute? 【发布时间】:2022-01-04 11:37:32 【问题描述】:我有 7 个视图,在同一布局中有 android:tag="92832380"
,我尝试使用 findViewWithTag
获取这些视图,但它只返回 1 个视图(第一个视图)所以什么是获取所有具有 @987654325 的视图的最佳方法@值?
编辑
根据下面的cmets讨论,我找到了这种解决问题的方法,但这是一个好方法,还是有更好的方法?
【问题讨论】:
java 还是 kotlin ? @a_local_nobody Java 而不是这样做,而是解释为什么你首先使用标签?你想达到什么目的? 要支持多语言应用程序,您可以为每种语言设置样式并在其中设置字体属性,然后您可以将样式用于视图。给这个东西贴标签只会让它变得复杂。如果您的应用同时显示多种语言,那么您也可以为视图设置不同的样式。由于您已经添加了标签,即您事先已经知道哪个 textview 将具有哪种字体,所以应该很难做到。 您不必复制所有内容,只需复制您想要与众不同的部分即可。要使用字体,您必须创建一个 font.xml 文件。只需寻找如何在 android 中使用自定义字体。你会得到它。 【参考方案1】:你可以试试这种方式
fun getViewsByTag(rootView: ViewGroup, tag: String): ArrayList<View>?
val views = ArrayList<View>()
val childCount = rootView.childCount
for (i in 0 until childCount)
val child = rootView.getChildAt(i)
if (child is ViewGroup)
views.addAll(getViewsByTag(child, tag)!!)
val tagObj = child.tag
if (tagObj != null && tagObj == tag)
views.add(child)
return views
如果您有多个具有相同标签的视图,您可以通过is
来识别它们,例如if (child is EditText)
【讨论】:
以上是关于如何获取所有在 tag 属性中具有值的视图?的主要内容,如果未能解决你的问题,请参考以下文章
在 JPA 中,我如何找到具有属性值的所有类型和具有属性值的 ManyTomany 相关实体?
如何从对象数组中获取具有属性的列表,除非它包含具有特定值的另一个项目?