【发布时间】:2016-05-27 19:39:18
【问题描述】:
我看到很多关于在导航栏顶部设置半透明状态栏的问题,如下所示:
但我想要实现的是拥有一个非半透明状态栏并使导航抽屉标题视图与操作栏高度相同。这适用于棒棒糖之前的设备(API layout_marginTop。是否有更好的解决方案可以为所有设备解决此问题?
API
API > 21:
styles.xml(v21):
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
</resources>
抽屉布局:
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="false"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
我尝试将fitsSystemWindows 设置为true 或false。没有变化。
这是我初始化导航抽屉时的 hack 解决方案(@AkashBhave 也回答了这个问题):
LinearLayout navigationHeader = (LinearLayout) navigationView.getHeaderView(0);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
// This is make sure navigation header is below status bar
// This only required for devices API >= 21
LinearLayout.LayoutParams layoutParams =
(LinearLayout.LayoutParams) navigationHeader.getLayoutParams();
layoutParams.setMargins(0, getStatusBarHeight(), 0, 0);
navigationHeader.setLayoutParams(layoutParams);
}
【问题讨论】:
标签: android navigation-drawer statusbar