Дочерний ящик имеет абсолютную гравитацию ВЛЕВО, но этот DrawerLayout уже имеет вид ящика вдоль этого края - PullRequest
0 голосов
/ 01 мая 2020

Я хочу создать навигационный ящик, как активность. Для этого мой код -

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.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_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main_page"
        app:menu="@menu/activity_main_page_drawer" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar_home"/>
        <com.mindorks.placeholderview.PlaceHolderView
            android:id="@+id/galleryView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"/>
    </LinearLayout>
    <FrameLayout
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="@android:color/white">
        <com.mindorks.placeholderview.PlaceHolderView
            android:id="@+id/drawerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical"/>
    </FrameLayout>


</androidx.drawerlayout.widget.DrawerLayout>

В макете app-bar-main-page - -

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    tools:context=".MainPageActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </com.google.android.material.appbar.AppBarLayout>

    <include layout="@layout/content_main_page" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

И панель инструментов home - -

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:gravity="left|center"
        android:layout_gravity="center"
        android:textSize="18sp"
        android:text="home"/>
</androidx.appcompat.widget.Toolbar>

А ящик основной страницы активности - -

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:icon="@drawable/ic_menu_camera"
            android:title="@string/menu_home" />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/ic_menu_gallery"
            android:title="@string/menu_gallery" />
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="@string/menu_slideshow" />
    </group>
</menu>

Когда я запускаю этот код, я получаю исключение -

java .lang.IllegalStateException: дочерний ящик имеет абсолютный Гравитация ЛЕВАЯ, но этот DrawerLayout уже имеет вид ящика вдоль этого края в androidx.drawerlayout.widget.DrawerLayout.onMeasure (DrawerLayout. java: 1134) в android .view.View.measure (Просмотр. java: 23614 ) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 7020) в android .widget.FrameLayout.onMeasure (FrameLayout. java: 185) в androidx.appcompat.widget.ContentFrameLayout.on ( ContentFrameLayout. java: 143) в android .view.View.measure (просмотр. java: 23614) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 7020) в android .widget.LinearLayout.measureChildBeforeLayout (LinearLayout. java: 1535) в android .widget.LinearLayout.measureVertical (LinearLayo ut. java: 825) в android .widget.LinearLayout.onMeasure (LinearLayout. java: 704) в android .view.View.measure (Просмотреть. java: 23614) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 7020) в android .widget.FrameLayout.onMeasure (FrameLayout. java: 185) в android .view.View.measure (Просмотреть. java) : 23614) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 7020) в android .widget.LinearLayout.measureChildBeforeLayout (LinearLayout. java: 1535) в android .widget.Lar. measureVertical (LinearLayout. java: 825) в android .widget.LinearLayout.onMeasure (LinearLayout. java: 704) в android .view.View.measure (Просмотреть. java: 23614) в android .view.ViewGroup.measureChildWithMargins (ViewGroup. java: 7020) в android .widget.FrameLayout.onMeasure (FrameLayout. java: 185) в com. android .internal.policy.DecorView.onMeasure (DecorView. java: 1268) в android .view.View.measure (просмотр. java: 23614) в android .view.ViewRootImpl.performMeasure (ViewRootImpl. java: 2920) в android .view.ViewRootImpl.mea sureHierarchy (ViewRootImpl. java: 1691) в android .view.ViewRootImpl.performTraversals (ViewRootImpl. java: 1989) в android .view.ViewRootImpl.doTraversal (ViewRootImpl. java: 1575 at) 1071 * .view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl. java: 7636) в android .view.Choreographer $ CallbackRecord.run (хореограф. java: 1029) в android .view.Choreogbacks.Co. (Хореограф. java: 834) в android .view.Choreographer.doFrame (Хореограф. java: 763) в android .view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф. java: 1015) в android .os.Handler.handleCallback (Обработчик. java: 873) в android .os.Handler.dispatchMessage (Обработчик. java: 99) в android .os.Looper.l oop (Looper. java: 224) на android .app.ActivityThread.main (ActivityThread. java: 7081) на java .lang.reflect.Method.invoke (собственный метод) на com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 536) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 928)

...