2014-03-13 44 views
5

我在我的應用程序中有一個錯誤,我不知道如何解決它。我的應用程序有兩個導航抽屜,左右。正確的抽屜工作正常,但當左側抽屜打開並點擊它時,它會檢測到我正在點擊主佈局。爲了更好地瞭解我告訴你這樣的畫面:錯誤:我可以點擊導航抽屜下的

enter image description here

我希望我解釋好。

這是我的代碼:

  • 佈局。

    <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代碼:

    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

您有右側抽屜的framelayout,因此如果您的頂部小部件沒有消耗該用戶點擊,它會將您的點擊傳輸到底部小部件。所以你需要添加空視圖並設置onclick監聽器並消耗點擊。按鈕不會再點擊。 –

+0

非常感謝。我向LinearLayout添加了一個空的onClick方法,現在它運行良好。 – Yeray

+0

嘿,那麼請接受我的回答。 〜謝謝 –

回答

1

你的FrameLayout右抽屜所以它會在您點擊傳送至底部部件,如果你的頂部小部件不消耗用戶點擊。所以你需要添加空視圖並設置onclick監聽器並消耗點擊。按鈕不會再點擊。

9

您必須在滑動窗格佈局中編寫android:clickable="true"