使两个视图共享单击约束布局中的反馈

时间:2018-04-27 06:07:32

标签: android-layout android-constraintlayout

我有这种情况,我有一个约束布局。其中有两个观点。 ImageView和TextView。单击这些视图中的任何一个时,我希望两者都产生反馈(textview中的文本颜色更改和imageview中的可绘制色调)但我似乎无法想出一种方法来执行这些操作,除非我将它们放在另一个视图组中

有人可以告诉我如何在约束布局中完成此操作吗?谢谢。

2 个答案:

答案 0 :(得分:0)

看看performClick()

  

performClick

     

boolean performClick()

     

调用此视图的OnClickListener(如果已定义)。执行与单击相关的所有正常操作:报告辅助功能事件,播放声音等

我们的想法是,当点击一个视图时,您的代码将在另一个视图上调用performClick()。如果两个视图执行相同的功能,则必须确保禁止任何重复操作。

除了在代码中执行此操作外,我不知道使用XML的方法。 ConstraintLayout中存在Group的概念,但这只是控制组成员可见性的一种方法,并不会扩展到其他属性。

我会使用另一个封闭视图组,除非你有要求不这样做。我似乎更容易。

答案 1 :(得分:0)

在ConstraintLayout中使用组概念指的是:https://developer.android.com/reference/android/support/constraint/Grouphttps://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.
            })