我在我的應用程序中有一個錯誤,我不知道如何解決它。我的應用程序有兩個導航抽屜,左右。正確的抽屜工作正常,但當左側抽屜打開並點擊它時,它會檢測到我正在點擊主佈局。爲了更好地瞭解我告訴你這樣的畫面:錯誤:我可以點擊導航抽屜下的
我希望我解釋好。
這是我的代碼:
佈局。
<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); } }
您有右側抽屜的framelayout,因此如果您的頂部小部件沒有消耗該用戶點擊,它會將您的點擊傳輸到底部小部件。所以你需要添加空視圖並設置onclick監聽器並消耗點擊。按鈕不會再點擊。 –
非常感謝。我向LinearLayout添加了一個空的onClick方法,現在它運行良好。 – Yeray
嘿,那麼請接受我的回答。 〜謝謝 –