我试图在打开时锁定导航抽屉外的触摸,为此我尝试过
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, GravityCompat.START);
但它的问题是抽屉锁定模式会禁用触摸整页布局上的任何位置。这是我的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/login_main_rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#702082"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_header_search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="#702082"
android:focusable="true"
android:focusableInTouchMode="true"
android:padding="@dimen/padding">
<ImageView
android:id="@+id/img_back_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding"
android:src="@drawable/back" />
<EditText
android:id="@+id/txt_search_title"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:background="@drawable/searchcustom"
android:drawableRight="@drawable/search"
android:textSize="@dimen/order_text" />
<ImageView
android:id="@+id/img_cart"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding"
android:src="@drawable/cartsample" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/category_toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/rl_header_search"
android:background="#67747f">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="12dp"
android:gravity="center"
android:text="@string/samples"
android:textAlignment="center"
android:textColor="@color/common_google_signin_btn_text_dark_default"
android:textSize="24sp"
android:typeface="sans" />
<ImageView
android:id="@+id/img_filter"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/imageView2"
android:layout_marginEnd="13dp"
android:layout_marginTop="5dp"
android:src="@drawable/sorticondemo" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@drawable/catagorymenuwhite" />
<RelativeLayout
android:id="@+id/rl_menu"
android:layout_width="40dp"
android:layout_height="match_parent"></RelativeLayout>
</RelativeLayout>
<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"
android:layout_above="@+id/rl_login_btm_menu11"
android:layout_below="@+id/category_toolbar"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_below="@+id/category_toolbar" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:background="#FFFFFF"
android:orientation="vertical">
<include layout="@layout/menu_layout">
<ImageView
android:src="@drawable/app_icon"/>
</include>
</LinearLayout>
<LinearLayout
android:id="@+id/right_drawer"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:background="#FFFFFF"
android:orientation="vertical">
<include layout="@layout/sub_category_list_item">
</include>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
<RelativeLayout
android:id="@+id/rl_login_btm_menu1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/rl_login_btm_menu11"
android:layout_centerHorizontal="true"
android:background="@drawable/white_arc"
android:padding="@dimen/padding"></RelativeLayout>
<RelativeLayout
android:id="@+id/rl_login_btm_menu11"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:paddingLeft="@dimen/padding"
android:paddingRight="@dimen/padding">
<ImageView
android:id="@+id/img_sa_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_margin="@dimen/padding"
android:padding="5dp"
android:src="@drawable/settings_footer" />
<ImageView
android:id="@+id/img_sa_hamb_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:paddingBottom="5dp"
android:src="@drawable/ph_logo_footer" />
<ImageView
android:id="@+id/img_sa_hamb_menu_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_margin="@dimen/padding"
android:padding="5dp"
android:src="@drawable/hamberger_footer" />
</RelativeLayout>
</RelativeLayout>
这是我在活动中使用的功能
private void init() {
// tv_name = (TextView) findViewById(R.id.tv_name);
rl_header_search = (RelativeLayout) findViewById(R.id.rl_header_search);
rl_menu = (RelativeLayout) findViewById(R.id.rl_menu);
img_filter = (ImageView) findViewById(R.id.img_filter);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // open drawer from menu icon only
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, GravityCompat.START);
mDrawerLayout.closeDrawer(Gravity.LEFT);
//keep drawer open untill user press close
mNavigationDrawerItemTitles= getResources().getStringArray(R.array.navigation_drawer_items_array);
// right_nav_List = (ListView) findViewById(R.id.left_drawer);
mDrawerLayout.closeDrawer(Gravity.RIGHT); // keeping drawer default close
// DataModel[] drawerItem = new DataModel[3];
//
// drawerItem[0] = new DataModel("Connect");
// drawerItem[1] = new DataModel("Fixtures");
// drawerItem[2] = new DataModel("Table");
// DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.sub_category_list_item, drawerItem);
//
// mDrawerLayout.setDrawerListener(mDrawerToggle);
obj_adapter = new CountryAdapter(ProductMainScreen_Activity.this, al_main);
ev_list.setAdapter(obj_adapter);
ev_list.setItemChecked(ev_list.getSelectedItemPosition(), false);
ev_list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { //auto collapse the drawer menu
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if (groupPosition != previousItem)
ev_list.collapseGroup(previousItem);
previousItem = groupPosition;
ExpandableListAdapter customExpandAdapter = (ExpandableListAdapter) ev_list.getExpandableListAdapter();
if (customExpandAdapter == null) {
return;
}
for (int i = 1; i < customExpandAdapter.getGroupCount(); i++) {
if (i != groupPosition) {
ev_list.collapseGroup(i);
setExpandableListViewHeightBasedOnChildren(ev_list); // added to wrap the extra height of menu layout
}
}
}
});
ev_list.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
setListViewHeight(parent, groupPosition);
return false;
}
});
setExpandableListViewHeightBasedOnChildren(ev_list);
ImageView imv = (ImageView) findViewById(R.id.close_drawer_icon);
imv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.closeDrawer(Gravity.LEFT);
}
});
rl_menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.openDrawer(Gravity.LEFT);
}
});
img_filter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.openDrawer(Gravity.RIGHT);
}
});
mDrawerLayout.setOnTouchListener(new OnSwipeTouchListener(ProductMainScreen_Activity.this) { // for swipe left gesture
public void onSwipeLeft() {
mDrawerLayout.closeDrawer(Gravity.LEFT);
}
public void onSwipeRight() {
mDrawerLayout.closeDrawer(Gravity.RIGHT);
}
});
}
问题是 header_search 和页脚布局也被禁用触摸。如何处理触摸以免影响其他布局?