我最近在我的应用主屏幕中实现了一个导航抽屉。出于某种原因,在它上面呈现一个小的灰色(或透明黑色)条 截图:
布局代码:
<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部分只是你的通用列表填充内容。如果您需要更多代码,请与我们联系。
如何删除这个奇怪的栏?
答案 0 :(得分:1)
NavigationView
是一个非常专业的ViewGroup
,可以根据提供的资源构建自己的内部结构。它并不打算用作常规ViewGroup
。也就是说,它并不意味着在布局XML或代码中直接添加子View
。
但是,这并不是很明显,因为如果您手动添加子项,则不会发生致命错误。 Android Studio的最新导航抽屉模板使用NavigationView
作为View
中的默认抽屉DrawerLayout
这一事实进一步混淆,没有任何迹象表明它不是强制性的抽屉是NavigationView
。抽屉几乎可以是任何类型的View
或ViewGroup
。
在这种情况下,阴影显然来自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" />
效果很好!