Сделать два просмотра Поделиться Нажмите Обратная связь в макете ограничения - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть такая ситуация, когда у меня есть макет ограничения. Внутри него лежат два взгляда. ImageView и TextView. Когда щелкает любой из этих видов, я хочу, чтобы оба произвели обратную связь (изменение цвета текста для просмотра текста и оттенок рисования в просмотре изображений), но я не могу придумать способ сделать это, если не помещу их в другую группу просмотра.

Может кто-нибудь показать мне, как это можно сделать в макете ограничений? спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Использование концепции группы в 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.
            })
0 голосов
/ 27 апреля 2018

Взгляните на performClick().

performClick

boolean executeClick ()

Вызовите OnClickListener этого представления, если оно определено. Выполняет все обычные действия, связанные с кликом: сообщение о событии доступности, воспроизведение звука и т. Д.

Идея состоит в том, что при нажатии одного представления ваш код будет вызывать performClick() в другом представлении. Вам нужно будет убедиться, что вы запретите любое дублирование действий, если два представления выполняют одну и ту же функцию.

Кроме того, что я делаю это в коде, я не знаю способа использования только XML. Существует понятие Group в ConstraintLayout, но это просто способ контролировать видимость членов группы и не распространяется на другие свойства.

Я бы использовал другую группу представлений, если у вас нет требования не делать этого. Мне просто кажется легче.

...