Как заблокировать ящик при щелчке за пределами ящика навигации, не затрагивая макет верхнего и нижнего колонтитула

я пытаюсь заблокировать касание за пределами навигационного ящика при открытии, для этого я пробовал

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 и макет нижнего колонтитула также отключаются. как обработать касание, чтобы не влияло на другие раскладки?


person Piyush Soni    schedule 26.09.2017    source источник
comment
@Anonymous, но как использовать dispatchtouchevent в init ()?   -  person Piyush Soni    schedule 26.09.2017
comment
просто переопределите метод в навигационной активности   -  person Sharath kumar    schedule 26.09.2017
comment
Спасибо, сработало :)   -  person Piyush Soni    schedule 26.09.2017
comment
добро пожаловать :)   -  person Sharath kumar    schedule 26.09.2017
comment
Если это работает, пожалуйста, проголосуйте за меня, так как это поможет написать больше ответов   -  person Sharath kumar    schedule 26.09.2017