panel lateral de navegación de Android no se cierra cuando haga clic fuera del cajón (un fragmento de la actividad principal)

mz999:

Por alguna razón, el panel lateral de navegación no se cierra al tocar fuera de los drawer.Its otro fragmento con ListView en MainActivity:

introducir descripción de la imagen aquí

Al tocar el fragmento de la derecha que no se cierre el cajón en su lugar actúa como como si el fragmento ocupa toda la pantalla y el procesador de clics todavía está activo en el fragmento.

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_orange_dark"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:title="Apartment Guide"
    app:titleTextColor="@android:color/white" />

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar"
    tools:context=".MainActivity">

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="220dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/white"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header"
        app:itemTextColor="@android:color/darker_gray"
        app:menu="@menu/drawer_menu" />

</android.support.v4.widget.DrawerLayout>

<FrameLayout
    android:id="@+id/fragment_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar">

</FrameLayout>

MainActivity.java:

    @Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mDrawerLayout = findViewById(R.id.drawer);
    fragmentContent = findViewById(R.id.fragment_content);
    mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_opened, R.string.drawer_closed) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getSupportActionBar().setTitle(R.string.drawer_opened);
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getSupportActionBar().setTitle(R.string.drawer_closed);
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            fragmentContent.setTranslationX(slideOffset * drawerView.getWidth());
            mDrawerLayout.bringChildToFront(drawerView);
            mDrawerLayout.requestLayout();
        }
    };
    mToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));

    mDrawerLayout.addDrawerListener(mToggle);
    mToggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    if (savedInstanceState == null)
        selectDrawerItem(null);

    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
            selectDrawerItem(menuItem);
            return true;
        }
    });
}

No sabe dónde estoy haciendo mal como cajón de cierre al tocar fuera del área cajón debe ser el comportamiento predeterminado en drawerLayouts.

Mohammed Refaat:

Esto sucede porque NavigationDrawer no es la captura de la vista debido a que los elementos de la actividad no se incluyen en él, y tenerlo funcionando correctamente, lo que tiene que hacer el NavigationDrawer es la raíz principal de su diseño actividad y el RelativeLayoutes un hijo de ella, como el seguimiento:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar"
    tools:context=".MainActivity">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/holo_orange_dark"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:title="Apartment Guide"
            app:titleTextColor="@android:color/white" />

        <FrameLayout
            android:id="@+id/fragment_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/toolbar">

        </FrameLayout>

    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="220dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/white"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header"
        app:itemTextColor="@android:color/darker_gray"
        app:menu="@menu/drawer_menu" />

</android.support.v4.widget.DrawerLayout>

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215792&siteId=1
Recomendado
Clasificación