Как запретить пользовательскому представлению внутри CoordinatorLayout перехватывать поведение других представлений - PullRequest
0 голосов
/ 23 апреля 2019

Вот простой макет:

<CoordinatorLayout>

    <View android:id="+id/view1" />

    <View 
        android:id="+id/view2"
        app:layout_behavior="@string/bottom_sheet_behavior" />

    <CustomView 
        android:id="+id/custom_view" />

</CoordinatorLayout>

Теперь давайте предположим, что CustomView является самым большим, так как его размер такой же, как у экрана устройства, хотя он может быть прозрачным и не должен обрабатывать какие-либосенсорный ввод событий.В этой ситуации я обнаружил, что layout_behavior, определенный в view2, больше не будет работать.Так почему же это происходит и как это решить?

Заранее спасибо за любые идеи или ответы.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Возможно, я не правильно понял ваш вопрос, но не могли бы вы просто установить clickable на false ?

android:clickable="false"

Как вы можете переключать его программно;

view.isClickable = false //true
0 голосов
/ 25 апреля 2019

Если я правильно понимаю, вы хотите использовать поведение

app: layout_behavior = "@ string / bottom_sheet_behavior"

Правильно? Поскольку CoordinatorLayout является сверхмощным FrameLayout , тогда вы должны поставить

<View
    android: id = "+ id / view2"
    app: layout_behavior = "@ string / bottom_sheet_behavior" />

ниже CustomView , чтобы поведение работало.

...