В моем приложении я вставляю / выключаю фрагменты в стеке, когда пользователь переходит на различные экраны. Представьте, что Фрагмент А - это нижний слой, пользовательский интерфейс Фрагмента Б расположен поверх этого, пользовательский интерфейс Фрагмента С - сверху Б.
Ранее у меня была проблема, что когда пользователь нажимал на фон фрагмента C (то есть не нажимал какую-либо конкретную кнопку или что-либо еще), этот каскад падал на фрагмент B и ударял по одному из кликабельных элементов и запускал это действие. Это было нехорошо, очевидно, но было легко исправить, сделав фон фрагмента C clickable="true"
, тогда он будет поглощать любые касания вместо того, чтобы позволить им провалиться.
Но у фрагмента C есть ListView, и в отчете перед запуском Google Play жалуется на доступность, потому что у меня есть «Несколько кликабельных элементов, которые разделяют это местоположение на экране» (т.е. ListView кликабелен, а мой фон RelativeLayout также кликабелен.
Как можно предотвратить попадание кликов на фрагменты ниже, не вызывая проблем с доступностью в отчете перед запуском?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:clickable="true"
android:focusable="true"
>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>