Подтвердить что ты не робот

Android SlidingDrawer не отключает кнопки "под" ящиком

Это сценарий: У меня есть кнопка B, и скользящий каретщик, который при вытаскивании покрывает весь экран. Когда я вытаскиваю экран и касаюсь экрана, где Б был видимым, его действие все еще выполняется.

Как я могу обойти это?

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

UPDATE: У меня есть файл с именем Report.java с соответствующим файлом report.xml, как показано ниже.

    <SlidingDrawer
     android:id="@+id/drawer"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:handle="@+id/reportSlideButton"
     android:content="@+id/reportContent"
     android:orientation="horizontal">

    <LinearLayout 
        android:id="@id/reportContent" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:orientation="vertical" 
        android:layout_weight="1"
        android:padding="10dp"
        android:background="@color/bg_color">
            <TextView android:id="@+id/garbageTypeTextView" 
                android:layout_height="wrap_content" 
                android:textColor="@color/text" 
                android:layout_width="fill_parent" 
                android:text="@string/garbageTypeString" 
                android:textStyle="bold"/>
            <Spinner android:id="@+id/garbageTypeSpinner"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"/>
            <TextView android:id="@+id/textViewForDateTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:text="@string/dateString"
                android:textColor="@color/text" 
                android:textStyle="bold" />
            <TextView android:id="@+id/dateTextView"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:textColor="@color/text" />
            <TextView android:id="@+id/textViewForAddressTitle"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content" 
                android:text="@string/addressString"
                android:textColor="@color/text" 
                android:textStyle="bold" />
            <TextView android:id="@+id/addressTextView"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:textColor="@color/text" />
            <TextView  android:id="@+id/textViewForPositionTitle"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content" 
                android:text="@string/positionString"
                android:textColor="@color/text" 
                android:textStyle="bold" />
            <TextView android:id="@+id/positionTextView"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:textColor="@color/text" />
            <TextView android:id="@+id/textViewForCommentTitle"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content" 
                android:text="@string/commentString"
                android:textColor="@color/text" 
                android:textStyle="bold" />
            <EditText android:id="@+id/commentTextBox"
                android:layout_height="fill_parent"
                android:layout_width="fill_parent" 
                android:layout_weight="1"/>
            <Button android:id="@+id/sendCrapportButton" 
                android:onClick="sendCrapport"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:text="Skicka rapport" />

    </LinearLayout>
        <Button android:id="@id/reportSlideButton"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:text=">"/>
</SlidingDrawer>

Добавление компонентов:

protected void addComponents() {
    takePictureButton = (ImageButton) findViewById(R.id.takePictureButton);
    slidingDrawer = (SlidingDrawer) findViewById(R.id.drawer);
}
4b9b3361

Ответ 1

вы можете добавить android: clickable = "true" в свой тег содержимого слайдера (id reportContent). таким образом, он не "щелкнет". ваши кнопки внутри слайдера должны работать. Надеюсь;)

Ответ 2

Просто добавив к ответу @f-horn:

Если вы добавляете макет из другого файла (например, я) для SlidingDrawer, вам нужно поместить "android: clickable =" true "" во включенный файл макета, а не в тег include. Позвольте мне скорее использовать пример:

Это не сработает:

main.xml

<SlidingDrawer  android:handle="@+id/handle"
       android:content="@+id/content">

        <ImageView android:id="@id/handle" />
        <include android:id="@+id/content" layout="@layout/some_other_layout" 
        android:clickable="true"/>
</SlidingDrawer>'

Это будет:

main.xml

<SlidingDrawer  android:handle="@+id/handle"
        android:content="@+id/content">

        <ImageView android:id="@id/handle" />
        <include android:id="@+id/content" layout="@layout/some_other_layout"/>
</SlidingDrawer>'

some_other_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:clickable="true"> ............
<LinearLayout/>

Ответ 3

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

Ответ 4

Эй, я застрял с этой ошибкой в ​​течение нескольких дней, поэтому есть простой ответ

вы уже создали в своем классе скользящее устройство; просто реализуйте в своем классе OnDrawerOpenListener, onDrawerCloseListener

то пусть класс добавит нереализованные методы и перейдет к ondraweropenlistener{ slidingdrawer.setclickable(true); }

и в drawercloselistener{ slidingdrawer.setclickable(false); }

это будет установлено, когда ящик открыт, сделает его доступным для клика и предотвратит щелчок в обратном представлении и когда он закроет все, вернитесь к умолчанию

это простейшее решение, попробуйте: D

Ответ 5

У меня была такая же проблема. Мои предметы в скользящем выдвижном ящике не смогли получить фокус. Попробовав несколько разных вещей, я обнаружил, что у меня есть место в скользящем ящике между тегом и линейной компоновкой с содержимым contentLayout.

Как только я удалил, все работает нормально.

<SlidingDrawer ....>
    <FrameLayout android:id="@+id/slideHandle" ... />

        **MOVED** <ScrollView> **TO**
    <LinearLayout android:id="@+id/contentLayout" ... >
        <ScrollView> **HERE**

Я надеюсь, что это поможет кому-то.

Ответ 6

На вашем SlidingDrawer переопределите onTouch (просмотр v, событие MotionEvent) и верните true.

Единственное, о чем я не сомневаюсь, заключается в том, будет ли каркас рассматривать ящик для наложения вида, даже когда он закрыт. Если это так, то вы должны добавить некоторые проверки, чтобы увидеть состояние ящика, возвращая isOpened(), которое будет истинным, когда ящик открыт, но false, когда он закрыт.

Ответ 7

This is My main layout and where i introduce sliding drawer inside this. 

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/Beige"
    android:clickable="true"
    android:orientation="vertical" >

    <Button
    android:id="@+id/DoneStart"
    android:layout_width="100dp"
    android:layout_height="40dp"
    android:textSize="14sp" />

    <SlidingDrawer
    android:id="@+id/SlidingDrawer"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:content="@+id/contentLayout"
    android:handle="@+id/handle_image"
    android:padding="1dp"
    android:rotation="180" >

    <LinearLayout
    android:id="@+id/contentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
    android:id="@+id/TextView01"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="8"
    android:text="Hello Slider" />
    </LinearLayout>
    </SlidingDrawer>

Образец шахты после бит фрустрации, где добавить этот андроид: clickable = "true"