2015-10-07 2 views
2

Мой drawerLayout перехватывает все события касания. Мне нужна помощь в определении того, как нажимать на элементы ниже. Вот как мой drawerLayout настроенDrawerlayout перехватывает все события касания

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/frag_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <RelativeLayout 
     .... some code ... 

    </RelativeLayout> 
</android.support.v4.widget.DrawerLayout> 

Я тогда ссылаться на этот макет в кириллице, как этот

<!-- elements inside of this relative layout 
    are unclickable because the drawer layout below 
    intercepts all clicks. If I place the drawer above 
    this view the drawer is beneath all the elements 
    in the relative layout, however, I am able to do 
    my clicks as expected. What I am doing incorrectly? --> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <!-- ... some code * the buttons here are what 
     I want to be clickable when drawer is closed. 
     I currently cannot reach them ... --> 

    </RelativeLayout> 

<include layout="@layout/drawer" /> 

</FrameLayout> 

я добавил android:clickable="false" и android:focusable="false" в XML на ящике. Программно я регистрировал клики, и это фактический ящик с id «drawer_layout», перехватывающий все клики. Сделать его незакрепленным не работает, он по-прежнему доступен для кликов. Я также попытался установить видимость INVISIBLE и GONE, и это тоже не жизнеспособные решения.

Как я могу сделать этот drawerLayout разрешить клики через него элементам под ним? Заранее спасибо!

ответ

1

Я понял это. Я закончил тем, что добавил свой основной макет к ящику, который является обратным тому, что я делал раньше, потому что перед тем, как добавить ящик в свой основной макет. Таким образом, изменение, которое я сделал, было

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/frag_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
     <include layout="@layout/main_layout" /> 
    </FrameLayout> 

    <RelativeLayout 
     .... some code ... 

    </RelativeLayout> 
</android.support.v4.widget.DrawerLayout> 

Если кто-то еще сталкивается с этой проблемой, это конфликт иерархии представлений. У вас не может быть ваш ящик поверх элементов, с которыми вы хотите взаимодействовать. Если у вас есть кнопки или другие виджеты, которые вам нужно для взаимодействия, вы должны включить их в свой макет ящика. Надеюсь, это поможет кому-то еще.

+0

это было, спасибо –

1

Установив clickable и focusable в false, я думаю, что вы отключите доступ к представлениям в макете. Удалите эти параметры из макета ящика. Попробуйте установить android: clickable = "true" и android: focusable = "true" для контейнера внутри макета ящика.

+0

Извините, хорошая теория, но не работает. drawerLayout перехватывает все клики, и если я устанавливаю значение focusable и clickable на false на drawerLayout, то Framelayout под ним будет перехватывать все клики. Установление как ложных результатов в ящике не работает должным образом, например. Я не могу вытащить его или хуже. – portfoliobuilder

+0

Итак, я немного запутался, какой элемент должен получить клики? – LostPuppy

+0

Вид под ящиком. Я «включаю» макет ящика на мой основной макет. Вложение находится внизу, что означает, что он находится поверх элементов, с которыми я хочу взаимодействовать, пока ящик закрыт. У меня нет доступа к этим элементам, поскольку макет ящика находится поверх него. Я хочу, чтобы вы могли щелкнуть ящик с элементами под ним. – portfoliobuilder