Android установил DrawerLayout для правильного выпуска - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь установить DrawerLayout вправо, но я получаю эту ошибку:

java.lang.IllegalStateException: Child drawer has absolute gravity RIGHT but this 
DrawerLayout already has a drawer view along that edge

Код деятельности:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_categories) {
        //drawerLayout.openDrawer(GravityCompat.END);
        if (drawerLayout.isDrawerOpen(Gravity.RIGHT))
            drawerLayout.closeDrawer(Gravity.RIGHT);
        else
            drawerLayout.openDrawer(Gravity.RIGHT);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

расположение

<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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/lightGrey"
android:id="@+id/drawer_layout"
tools:openDrawer="end"
tools:context=".MainActivity">

....

<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/navigation_view"
    android:layout_gravity="end"
    app:menu="@menu/categories"/>

Я попробовал несколько решений из этого вопроса , но ни одно из них не решило проблему. Я пытался использовать End вместо Right и GravityCompat вместо Gravity, но всегда получал эту ошибку.

1 Ответ

0 голосов
/ 07 мая 2019

DrawerLayout может содержать только 2 корневых макета, поэтому я установил NavigationView и LinearLayout, который содержит все другие виды, и теперь он работает

...