Отключить прослушиватель кликов для невидимой группы просмотра - PullRequest
0 голосов
/ 29 мая 2020

У меня есть группа просмотра, которая при некоторых обстоятельствах равна View.INVISIBLE. В этом состоянии я хочу, чтобы группа просмотра или ее дочерние представления НЕ реагировали на какие-либо события щелчка.

Согласно реализации по умолчанию View.INVISIBLE в android, дочерние представления внутри группы просмотра по-прежнему доступны для щелчка, даже если видимость группы просмотра невидима. Я знаю, что могу установить видимость View.GONE, но не хочу, чтобы вся группа просмотра удалялась.

Я пробовал установить setClickable на true в группе просмотра, но это не сработало, и дочерние представления все еще реагируют на щелчки. Я не хочу перебирать все представления в группах и отключать их по отдельности, так как это то, что мне приходится делать часто.

Есть ли лучшее решение, чтобы запретить всем дочерним представлениям в группе просмотра получать события щелчка?

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Попробуй старым способом.

viewgroup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(viewgroup.getVisibility() == View.INVISIBLE)
                return;
        }
    });
0 голосов
/ 29 мая 2020

Вы пробовали setEnabled(false)?

Если это не сработает, вы можете отключить все дочерние элементы представления следующим образом:

LinearLayout layout = (LinearLayout) findViewById(R.id.my_layout);
for (int i = 0; i < layout.getChildCount(); i++) {
    View child = layout.getChildAt(i);
    child.setEnabled(false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...