DrawerLauyout 全屏

本文介绍如何在Android中创建全屏的DrawerLayout,包括使用ToolBar替代ActionBar以扩展View的绘制区域,并设置StatusBar颜色,使得DrawerLayout可以穿透StatusBar。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.概述

在Android L 中最常使用的页面布局DrawerLayout. 官方App显示的效果是这样的:这里写图片描述

但是简单使用DrawerLayout是没有这个效果的。下面就来逐步实现这个全屏效果。

1.思路

使用ToolBar代替ActionBar,从而让View的绘制范围包含ActionBar那块区域。
让DrawerLayout去设置statusbar的颜色。

2.过程

1.设置theme:
  <style name="AppTheme.Main" parent="AppTheme">
    <!-- 默认的statusBar color -->
    <item name="android:statusBarColor">@color/dialog_bg_light</item>

    <!-- 弃用系统ActionBar -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

    <!-- 如果希望通过DrawerLayout设置statusbarColor,则可以使window 管理 status bar color -->
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
2.在布局中加入 Toolbar

注意设置android:fitsSystemWindows="true",不然DrawerLayout无法穿透statusBar

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- The main content view -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/my_awesome_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/dialog_bg"
        android:minHeight="?attr/actionBarSize" />
</FrameLayout>
<!-- The navigation drawer -->
<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#1B5E20"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:fitsSystemWindows="true" />
 </android.support.v4.widget.DrawerLayout>
3.Activity中使用布局中的ToolBar
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drawer_layout);
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);

    // 注意setStatusBarBackgroundColor方法需要你将fitsSystemWindows设置为true才会生效
    // DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    // drawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.dialog_bg));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值