Как я могу сделать представление неразрешимым. У меня два вида холста, уложенных друг на друга в макете фреймов. Оба холста занимают всю площадь экрана, и оба они прозрачны. Я хочу показать PNG на верхнем холсте и позволить пользователю нарисовать нижний холст.
Проблема заключается в том, когда пользователь прикасается к экрану, сенсорный ввод берется верхним холстом, и поскольку он ничего не делает (рисует нижний холст), ничего не происходит.
Я хочу, чтобы верхний холст действовал как оверлейный вид без взаимодействия и не назначался никаких событий, все они должны потребляться снизу. Если я устанавливаю верхний оверлей невидимым, я могу нарисовать нижний холст (так как теперь нижний холст получает все входы).
Также холст не является стандартным холстом, а обычным. Он был получен непосредственно из класса View. Но я думаю, что производное представление не вызовет проблемы. Я просто не знаю, как это сделать.
Я попытался использовать onTouch() на верхнем холсте и вызывать onTouch() нижнего холста, не работал. Я тестирую некоторые другие вещи, такие как dispatchTouch() на 2 кнопках, но мне ничего не кажется. Помощь была бы действительно оценена.
Изменение: добавлен код макета XML
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.samsung.sdraw.CanvasView
android:id="@+id/canvas1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="cnvs1Click"
android:text="Canvas1" />
<com.samsung.sdraw.CanvasView
android:id="@+id/canvas2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Canvas2"
android:onClick="cnvs2Click"/>
</FrameLayout>
Но я все еще думаю, что проблема будет решена View (s). Холст от S pen SDK
Это может быть особый случай, не играл, чтобы убедиться, что это правда, но, как правило, в ваших событиях onTouch и т.д. Вы просто возвращаете false, если вы не обработали событие, и событие пузырится вверх по каждому виду, касаясь событий, пока что-то возвращает true, что указывает на то, что он обрабатывает хит.
если вы сделаете свой один вид (верхний уровень), просто верните false из него onTouch, нижние представления onTouch должны получить событие.
попробуйте в XML добавить в корневой вид
android:focusable="false"
android:focusableInTouchMode="false"