导航抽屉上出现灰色条

时间:2017-12-13 08:27:48

标签: android navigation-drawer

我最近在我的应用主屏幕中实现了一个导航抽屉。出于某种原因,在它上面呈现一个小的灰色(或透明黑色)条 截图:

Screenshot

布局代码:

<android.support.design.widget.CoordinatorLayout 
... >

    <LinearLayout
        ... >

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/appbar_padding_top"
            android:theme="@style/AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/PopupOverlay"/>

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.widget.DrawerLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/drawer_layout">

            <fragment
                ... />

            <android.support.design.widget.NavigationView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/navigation"
                android:layout_gravity="start">

                <ListView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/list_nav"/>

            </android.support.design.widget.NavigationView>

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

    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        ... />

</android.support.design.widget.CoordinatorLayout>

Java部分只是你的通用列表填充内容。如果您需要更多代码,请与我们联系。

如何删除这个奇怪的栏?

3 个答案:

答案 0 :(得分:1)

NavigationView是一个非常专业的ViewGroup,可以根据提供的资源构建自己的内部结构。它并不打算用作常规ViewGroup。也就是说,它并不意味着在布局XML或代码中直接添加子View

但是,这并不是很明显,因为如果您手动添加子项,则不会发生致命错误。 Android Studio的最新导航抽屉模板使用NavigationView作为View中的默认抽屉DrawerLayout这一事实进一步混淆,没有任何迹象表明它不是强制性的抽屉是NavigationView。抽屉几乎可以是任何类型的ViewViewGroup

在这种情况下,阴影显然来自NavigationView内部的东西。但是,由于它没有被用于其任何专业功能,NavigationView可以完全删除,ListView可以自己充当抽屉。

只需删除<NavigationView>元素以及与之关联的任何代码。要将ListView设置为抽屉,请将其layout_gravity属性设置为start,并将其layout_width设置为精确值;例如,240dp

答案 1 :(得分:0)

对我来说,它可以添加

app:insetForeground="@color/transparent"

到NavigationView的XML定义。

答案 2 :(得分:0)

我在activity_main.xml行中添加:

<com.google.android.material.navigation.NavigationView
...
     app:insetForeground="@android:color/transparent" />

效果很好!