Intereting Posts
Как импортировать класс из другого модуля в студию Android? Андроидный ярлык, панель запуска db Set button Видимый в другой функции с настройкой Preferences Должен ли распознаватель речи Google на Android нужен интернет? Как я могу интегрировать свое приложение с моим виджетами? RuntimeException: собственный шрифт не может быть создан или утечка памяти для пользовательского шрифта загрузки TextView Фоновое изображение не повторяется в макете android Могу ли я писать собственный iPhone, Android, Windows, BlackBerry приложения, используя Python? Ошибка Android «Нет такого файла или каталога»? Настройка каталога настраиваемых ресурсов для модульного тестирования в Android Studio SpannableString не работает при использовании темы AppCompat Выход из системы Android Android SDK Задача Async не работает должным образом (doInBackground не выполняется), когда служба работает в фоновом режиме, Android Потребление батареи, когда TCP открыто для ADB через Wi-Fi, может подключаться Android: запуск новой активности из класса приложения

Как щелкнуть взгляды за панелью инструментов?

У меня есть панель инструментов с прозрачным / полупрозрачным фоном, который накладывает содержимое. Таким образом, за панелью инструментов могут отображаться виды, которые можно щелкнуть. Проблема в том, что они не могут быть нажаты через панель инструментов, потому что панель инструментов захватывает событие click.

Я пробовал настройку android:clickable="false" , android:focusable="false" и android:focusableInTouchMode="false" для панели инструментов, но это не имеет никакого эффекта. Как отправить клик по панели инструментов в основное представление?

Solutions Collecting From Web of "Как щелкнуть взгляды за панелью инструментов?"

Взгляните на реализацию Toolbar . Он ест события касания , независимо от атрибута clickable .

 @Override public boolean onTouchEvent(MotionEvent ev) { // Toolbars always eat touch events, but should still respect the touch event dispatch // contract. If the normal View implementation doesn't want the events, we'll just silently // eat the rest of the gesture without reporting the events to the default implementation // since that's what it expects. final int action = MotionEventCompat.getActionMasked(ev); if (action == MotionEvent.ACTION_DOWN) { mEatingTouch = false; } if (!mEatingTouch) { final boolean handled = super.onTouchEvent(ev); if (action == MotionEvent.ACTION_DOWN && !handled) { mEatingTouch = true; } } if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mEatingTouch = false; } return true; } 

Решение состоит в том, чтобы перейти от Toolbar и переопределить onTouchEvent .

 public class NonClickableToolbar extends Toolbar { @Override public boolean onTouchEvent(MotionEvent ev) { return false; } } 

Ваш дизайн необходимо отрегулировать. Вы не можете предоставлять интерактивные представления за прозрачной / полупрозрачной панелью инструментов. Вам необходимо предоставить верхнюю прописку, равную высоте панели инструментов, и / или реализовать шаблон быстрого возврата для панели инструментов.