문제

I have a bug in my application and I dont know how to solve it. My application has two navigation drawer, right and left. The right navigation drawer works well but when the left navigation drawer is open and I click within it, it detect that I'm clicking in the main layout. In order to understand better I show you this picture:

enter image description here

I hope I explained well.

This is my code:

  • layout.

    <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="@android:id/tabcontent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0" />
    
    <!-- Left -->
    
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="400dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/black_main"
        android:choiceMode="singleChoice"
        android:divider="#555555"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/menu_list_selector" />
    
    <!-- Right -->
    
    <LinearLayout
        android:id="@+id/right_drawer"
        android:layout_width="400dp"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:choiceMode="singleChoice"
        android:background="@color/white_opaque"
        android:orientation="vertical" >
    
        <LinearLayout
            android:id="@+id/container_filtros"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
    
            <LinearLayout
                android:id="@+id/cnt_filtros"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
    
                <include
                    android:id="@+id/filtros"
                    layout="@layout/menu_filtros" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/cnt_categorias"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone" >
    
                <include
                    android:id="@+id/lstCategorias"
                    layout="@layout/filter_categorias" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    
    </android.support.v4.widget.DrawerLayout>
    
  • Java code:

    private void setSlides(Bundle savedInstanceState) {
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerViewRight = (View) findViewById(R.id.right_drawer);
    mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
    
    mFilterList = (ListView) findViewById(R.id.list_filter);
    mRightDrawerList = (ListView) findViewById(R.id.right_drawer_list);
    mOrdenarList = (ListView) findViewById(R.id.list_ordenar);
    mDistanceList = (ListView) findViewById(R.id.list_distance);
    
    // LEFT SLIDING
    navDrawerItems = new ArrayList<MoNavMenu>();
    
    // Items
    navDrawerItems.add(new MoNavMenu("DIIN", R.drawable.slide_img_home));
    navDrawerItems.add(new MoNavMenu("¿QUÉ HACER", R.drawable.slide_img_quehacer));
    navDrawerItems.add(new MoNavMenu("¿A DÓNDE IR?", R.drawable.slide_img_dondeir));
    navDrawerItems.add(new MoNavMenu("DESCUBRE", R.drawable.slide_img_descubre));
    navDrawerItems.add(new MoNavMenu("LEE TU MAPA", R.drawable.slide_img_leermapa));
    navDrawerItems.add(new MoNavMenu("CAPTURA DIIN", R.drawable.slide_img_captura));
    navDrawerItems.add(new MoNavMenu());
    navDrawerItems.add(new MoNavMenu("CONFIGURACIÓN", R.drawable.slide_img_config));
    
    // RIGHT SLIDING
    navRightDrawerItems = new ArrayList<MoNavCategory>();
    navFilters = new ArrayList<MoNavFilter>();
    navFilters.add(new MoNavFilter("CATEGORÍA", filterCategoria));
    
    
    adapter = new AdNavMenu(getApplicationContext(), navDrawerItems);
    adapterR = new AdNavRight(this, navRightDrawerItems);
    adapterFilter = new AdFilterHome(this, navFilters);
    
    mDrawerList.setAdapter(adapter);
    mFilterList.setAdapter(adapterFilter);
    mRightDrawerList.setAdapter(adapterR);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
    
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, 
            R.string.app_name, 
            R.string.app_name 
            ) {
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu();
        }
    
        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    
    if (savedInstanceState == null) {
        displayView(0);
    }
    }
    
도움이 되었습니까?

해결책 2

You have framelayout for right drawer so it will transfer your click to bottom widget if your top widget is not consuming that user click. So you need to add empty view and set onclick listener and consume click there. Button will not get click any more.

다른 팁

You have to write android:clickable="true" in your sliding pane layout.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top