2014-03-13 5 views
5

Ich habe einen Fehler in meiner Anwendung und ich weiß nicht, wie Sie es lösen. Meine Anwendung hat zwei Navigationsfächer, rechts und links. Die rechte Navigationsleiste funktioniert gut, aber wenn die linke Navigationsleiste geöffnet ist und ich darauf klicke, wird erkannt, dass ich in das Hauptlayout klicke. Um besser zu verstehen, zeige ich Ihnen, dieses Bild:Fehler: Ich kann unter der Navigationsleiste klicken

enter image description here

Ich hoffe, dass ich gut erklärt.

Dies ist mein 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); 
    } 
    } 
    
+1

Sie haben framelayout für die rechte Schublade, so dass Ihr Klick-zu-Unten-Widget übertragen wird, wenn Ihr Top-Widget diesen Benutzer nicht klickt. Also müssen Sie eine leere Ansicht hinzufügen und OnClick Listener setzen und klicken Sie dort auf klicken. Schaltfläche wird nicht mehr geklickt. –

+0

Vielen Dank. Ich füge eine onClick Methode zu einem LinearLayout hinzu und jetzt funktioniert es gut. – Yeray

+0

Hey, dann akzeptiere bitte meine Antwort. ~ Danke –

Antwort

1

Sie haben nach rechts Schublade framelayout so dass es Ihr Klick nach unten Widget übertragen wird, wenn Ihr Top-Widget nicht ist, dass Benutzer klicken Sie verbrauchen. Also müssen Sie eine leere Ansicht hinzufügen und OnClick Listener setzen und klicken Sie dort auf klicken. Schaltfläche wird nicht mehr geklickt.

9

Sie müssen android:clickable="true" in Ihr Schiebefensterlayout schreiben.