我有这种情况,我有一个约束布局。其中有两个观点。 ImageView和TextView。当单击这些视图中的任何一个时,我希望两者都产生反馈(textview中的文本颜色更改和imageview中的可绘制色调)但我似乎无法想到这样做的方法,除非我将它们放在另一个视图组中。
有人能告诉我如何在约束布局中完成这项工作吗?谢谢。
performClick
boolean performClick()
调用此视图的OnClickListener(如果已定义)。执行与点击相关的所有正常操作:报告辅助功能事件,播放声音等。
我们的想法是,当单击一个视图时,您的代码将在另一个视图上调用performClick()
。如果两个视图执行相同的功能,则必须确保禁止任何重复操作。
除了在代码中执行此操作外,我不知道使用XML的方法。在Group
中有ConstraintLayout
的概念,但这只是一种控制组成员可见性的方法,并没有扩展到其他属性。
我会使用另一个封闭视图组,除非你有要求不这样做。我似乎更容易。
在ConstraintLayout中使用Group概念参考:https://developer.android.com/reference/android/support/constraint/Group,https://riggaroo.co.za/constraintlayout-guidelines-barriers-chains-groups/,
在java中
Group group = findViewById(R.id.group);
int refIds[] = group.getReferencedIds();
for (int id : refIds) {
findViewById(id).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// your code here.
}
});
}
科特林:
fun Group.setAllOnClickListener(listener: View.OnClickListener?) {
referencedIds.forEach { id ->
rootView.findViewById<View>(id).setOnClickListener(listener)
}
}
Then call the function on the group:
group.setAllOnClickListener(View.OnClickListener {
// your code here.
})