Intereting Posts
Как проверить фрагмент с помощью эспрессо Лицензирование приложений и защита от копирования на Android Как проверить журнал сбоев с помощью android ndk в cocos2d-x Панель инструментов не будет разрушаться с помощью Scrollview в качестве дочернего элемента CoordinatorLayout Как передать объект из одной активности в другую на Android Как показать или прочитать файл docx RecyclerView.getChild (index) показывает null, когда список прокручивается (индекс перепутался) Как нарисовать растровое изображение в андроиде? Анимация верхнего и нижнего размеров представления BottomSheetDialog / BottomSheetDialogFragment – что использовать и как? Использование MultiDexApplication приводит к тому, что тест Robolectric для класса приложения прерывается Просмотр списка Android в прокрутке Разница между «размером экрана» и «плотностью экрана» в Android? Предупреждение на EditText Проблема с несколькими видеообъявлениями для Android, специальная опция Galaxy Tab

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

У меня есть панель инструментов с прозрачным / полупрозрачным фоном, который накладывает содержимое. Таким образом, за панелью инструментов могут отображаться виды, которые можно щелкнуть. Проблема в том, что они не могут быть нажаты через панель инструментов, потому что панель инструментов захватывает событие 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; } } 

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