我有这种情况,我有一个约束布局。其中有两个观点。 ImageView和TextView。单击这些视图中的任何一个时,我希望两者都产生反馈(textview中的文本颜色更改和imageview中的可绘制色调)但我似乎无法想出一种方法来执行这些操作,除非我将它们放在另一个视图组中
有人可以告诉我如何在约束布局中完成此操作吗?谢谢。
答案 0 :(得分:0)
performClick
boolean performClick()
调用此视图的OnClickListener(如果已定义)。执行与单击相关的所有正常操作:报告辅助功能事件,播放声音等
我们的想法是,当点击一个视图时,您的代码将在另一个视图上调用performClick()
。如果两个视图执行相同的功能,则必须确保禁止任何重复操作。
除了在代码中执行此操作外,我不知道使用XML的方法。 ConstraintLayout
中存在Group
的概念,但这只是控制组成员可见性的一种方法,并不会扩展到其他属性。
我会使用另一个封闭视图组,除非你有要求不这样做。我似乎更容易。
答案 1 :(得分:0)
在ConstraintLayout中使用组概念指的是: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.
})