首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用DrawerLayout来显示ActionBar,在工具栏和状态栏下?

如何使用DrawerLayout来显示ActionBar,在工具栏和状态栏下?

提问于 2017-12-22 01:29:25
回答 2关注 0查看 634

我在新的Side Nav规范中看到,可以在操作栏和状态栏后面显示locker。我怎样才能实现呢?

回答 2

心愿

发布于 2017-12-22 02:08:39

让它工作,在值-v21风格或主题xml需要使用此属性:

代码语言:txt
AI代码解释
复制
<item name="android:windowTranslucentStatus">true</item>

人生的旅途

发布于 2017-12-22 02:07:52

框架和支持库中的新功能可以完全实现这一点。有三个难题:

  1. 使用工具栏,以便您可以将您的操作栏嵌入到视图层次结构中。
  2. 使DrawerLayout fitsSystemWindows放置在系统条的后面。
  3. 禁用Theme.Material正常的状态栏着色,以便DrawerLayout可以在那里绘制。
  4. 我假设你将使用新的appcompat。

首先,你的布局应该是这样的:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
<!-- The important thing to note here is the added fitSystemWindows -->
代码语言:txt
AI代码解释
复制
<android.support.v4.widget.DrawerLayout
代码语言:txt
AI代码解释
复制
    xmlns:android="http://schemas.android.com/apk/res/android"
代码语言:txt
AI代码解释
复制
    android:id="@+id/my_drawer_layout"
代码语言:txt
AI代码解释
复制
    android:layout_width="match_parent"
代码语言:txt
AI代码解释
复制
    android:layout_height="match_parent"
代码语言:txt
AI代码解释
复制
    android:fitsSystemWindows="true">
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    <!-- Your normal content view -->
代码语言:txt
AI代码解释
复制
    <LinearLayout
代码语言:txt
AI代码解释
复制
        android:layout_width="match_parent"
代码语言:txt
AI代码解释
复制
        android:layout_height="match_parent"
代码语言:txt
AI代码解释
复制
        android:orientation="vertical">
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        <!-- We use a Toolbar so that our drawer can be displayed
代码语言:txt
AI代码解释
复制
             in front of the action bar -->
代码语言:txt
AI代码解释
复制
        <android.support.v7.widget.Toolbar  
代码语言:txt
AI代码解释
复制
            android:id="@+id/my_awesome_toolbar"
代码语言:txt
AI代码解释
复制
            android:layout_height="wrap_content"
代码语言:txt
AI代码解释
复制
            android:layout_width="match_parent"
代码语言:txt
AI代码解释
复制
            android:minHeight="?attr/actionBarSize"
代码语言:txt
AI代码解释
复制
            android:background="?attr/colorPrimary" />
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        <!-- The rest of your content view -->
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    </LinearLayout>
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    <!-- Your drawer view. This can be any view, LinearLayout
代码语言:txt
AI代码解释
复制
         is just an example. As we have set fitSystemWindows=true
代码语言:txt
AI代码解释
复制
         this will be displayed under the status bar. -->
代码语言:txt
AI代码解释
复制
    <LinearLayout
代码语言:txt
AI代码解释
复制
        android:layout_width="304dp"
代码语言:txt
AI代码解释
复制
        android:layout_height="match_parent"
代码语言:txt
AI代码解释
复制
        android:layout_gravity="left|start"
代码语言:txt
AI代码解释
复制
        android:fitsSystemWindows="true">
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        <!-- Your drawer content -->
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    </LinearLayout>
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
</android.support.v4.widget.DrawerLayout>

然后在你的Activity / Fragment中:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
public void onCreate(Bundled savedInstanceState) {
代码语言:txt
AI代码解释
复制
    super.onCreate(savedInstanceState);
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    // Your normal setup. Blah blah ...
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    // As we're using a Toolbar, we should retrieve it and set it
代码语言:txt
AI代码解释
复制
    // to be our ActionBa
代码语言:txt
AI代码解释
复制
    Toolbar toolbar = (...) findViewById(R.id.my_awesome_toolbar);
代码语言:txt
AI代码解释
复制
    setSupportActionBar(toolbar);
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    // Now retrieve the DrawerLayout so that we can set the status bar color.
代码语言:txt
AI代码解释
复制
    // This only takes effect on Lollipop, or when using translucentStatusBa
代码语言:txt
AI代码解释
复制
    // on KitKat.
代码语言:txt
AI代码解释
复制
    DrawerLayout drawerLayout = (...) findViewById(R.id.my_drawer_layout);
代码语言:txt
AI代码解释
复制
    drawerLayout.setStatusBarBackgroundColor(yourChosenColor);
代码语言:txt
AI代码解释
复制
}

然后,您需要确保DrawerLayout在状态栏后面可见。你通过改变你的values-v21主题来做到这一点:

值-V21 /的themes.xml

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
<style name="Theme.MyApp" parent="Theme.AppCompat.Light.NoActionBar">
代码语言:txt
AI代码解释
复制
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
代码语言:txt
AI代码解释
复制
    <item name="android:statusBarColor">@android:color/transparent</item>
代码语言:txt
AI代码解释
复制
    <item name="android:windowTranslucentStatus">true</item>
代码语言:txt
AI代码解释
复制
</style>

注意:如果使用a <fragment android:name="fragments.NavigationDrawerFragment">而不是

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
<LinearLayout
代码语言:txt
AI代码解释
复制
    android:layout_width="304dp"
代码语言:txt
AI代码解释
复制
    android:layout_height="match_parent"
代码语言:txt
AI代码解释
复制
    android:layout_gravity="left|start"
代码语言:txt
AI代码解释
复制
    android:fitsSystemWindows="true">
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    <!-- Your drawer content -->
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
</LinearLayout>
代码语言:txt
AI代码解释
复制
the actual layout, the desired effect will be achieved if you call fitsSystemWindows(boolean) on a view that you return from onCreateView method.
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
@Override
代码语言:txt
AI代码解释
复制
public View onCreateView(LayoutInflater inflater, 
代码语言:txt
AI代码解释
复制
                         ViewGroup container,
代码语言:txt
AI代码解释
复制
                         Bundle savedInstanceState) {
代码语言:txt
AI代码解释
复制
    View mDrawerListView = inflater.inflate(
代码语言:txt
AI代码解释
复制
        R.layout.fragment_navigation_drawer, container, false);
代码语言:txt
AI代码解释
复制
    mDrawerListView.setFitsSystemWindows(true);
代码语言:txt
AI代码解释
复制
    return mDrawerListView;
代码语言:txt
AI代码解释
复制
}
和开发者交流更多问题细节吧,去 写回答
相关文章
android Material Design详解
前言 我们都知道Marterial Design是Google推出的全新UI设计规范,如果对其不太了解的可以看下:Material design非官方中文指导手册 ,或者我的前面几篇Material Design的译文,相比之前Google在Android Holo风格上平平淡淡的表现不同,Material Design现在是被Google所比较重视的。在推出这门全新设计语言后,Android上自家的应用很快就使用Material Design全新设计了,如Play商店,Google Map,Goog
xiangzhihong
2018/02/01
2.1K0
android Material Design详解
Android Material Design之Toolbar与Palette实践
前言 我们都知道Marterial Design是Google推出的全新UI设计规范,如果对其不太了解的可以看下:Material design非官方中文指导手册 ,或者我的前面几篇Material Design的译文,相比之前Google在Android Holo风格上平平淡淡的表现不同,Material Design现在是被Google所比较重视的。在推出这门全新设计语言后,Android上自家的应用很快就使用Material Design全新设计了,如Play商店,Google Map,Google+
xiangzhihong
2018/02/01
1.4K0
Android Material Design之Toolbar与Palette实践
deepin下状态栏无法显示问题
直接启动dde-dock,通过 ctrl + atl + t 键呼出终端,在终端输入 dde-dock来启动状态栏,如果状态栏已经启动过,则会报错并退出,返回一个进程的pid,我们拿到pid然后使用kill -9 pid将进程关闭,此时dde-dock就会重新启动,我们再右键进行调整 如果是安装了插件,并且上面的方法无效,则重新安装dde-dock, sudo apt-get reinstall dde-dock,或者先卸载在安装。
caoayu
2020/09/23
1.3K0
IntelliJ IDEA 如何显示工具栏
https://www.ossez.com/t/intellij-idea/13867
HoneyMoose
2022/01/28
3.1K0
IntelliJ IDEA 如何显示工具栏
Material Design 实战 之第二弹——滑动菜单详解&实战
本模块共有六篇文章,参考郭神的《第一行代码》,对Material Design的学习做一个详细的笔记,大家可以一起交流一下:
凌川江雪
2018/10/09
1.1K0
Material Design 实战 之第二弹——滑动菜单详解&实战
陪伴了你N年的控件等你来看—DrawerLayout
Hi,又见面啦,昨天给大家介绍了关于微信的一个控件,那么今天给大家介绍的是一个“陪伴”了我们很多年且常用又实用的控件。阔能花粉们会很疑惑,我只是个技术小白呀,怎么它就陪伴了我好多年了?那么就赶紧来看看今天的主角— DrawerLayout吧~
下码看花
2019/09/06
6690
pyqt5创建菜单栏、状态栏和工具栏
菜单栏、状态栏与工具栏是人机交互的基本形式。一个好的交互界面一般都有部分的人机交互接口。QMainWindow类提供了一个应用主窗口。默认创建一个拥有状态栏、工具栏和菜单栏的经典应用窗口骨架。通过QMainWindow你可以添加自己的QToolBars、QDockWidgets、QMenuBar、QStatusBar等。
里克贝斯
2021/05/21
8670
pyqt5创建菜单栏、状态栏和工具栏
1.ActionBar
ActionBar 低版本和高版本用法不同 低版本: 1. 引用v7-appcompat 2. Activity继承ActionBarActivity 3. android:theme="@style/Theme.AppCompat.Light" > 高版本: 1. Activity自带actionBar 2.从Android3.0(APIlever11)开始,所有使用Theme.Holo主题(或者它的子类)的activity都包含了actionbar,当 targetSdkVersion或min
六月的雨
2018/05/14
1K0
1.ActionBar
低版本: 1. 引用v7-appcompat 2. Activity继承ActionBarActivity 3. android:theme="@style/Theme.AppCompat.Light" >
六月的雨
2022/01/17
6640
Palette状态栏颜色提取,写的不错就分享了
Palette 说Palette之前先说下前面提到的Pager。ViewPager是什么大家应该都是知道的了,一般ViewPager、xxxTabStrip、Fragment三个好基友是一起出现的。这里的xxxTabStrip是使用Github上的PagerSlidingTabStrip。当我们的Pager切换时伴随着Fragment的变化,而Fragment里的内容一般是不同的,所以每个Fragment里的一般视觉效果也是不同的,所以我们可以用Palette来去提取Fragment中的主色调,那Fra
xiangzhihong
2018/02/01
9390
Palette状态栏颜色提取,写的不错就分享了
Android状态栏微技巧,带你真正理解沉浸式模式
本文介绍了沉浸式模式在Android开发中的实现,主要包括了沉浸式模式的定义、实现方式、优缺点以及实例展示。
用户1158055
2018/01/08
2.4K0
Android状态栏微技巧,带你真正理解沉浸式模式
DrawerLayout使用详解
文档:https://developer.android.google.cn/reference/android/support/v4/widget/DrawerLayout
yechaoa
2022/06/10
5900
DrawerLayout使用详解
关于 Android 中的各种 Bar 和“透明状态栏”的一些知识
其实这篇主要是讲解适配状态栏的,在这其中可能有些读者对状态栏(StatusBar)、ActionBar、ToolBar、TitleBar有点混淆或者感觉很混乱,所以就有了这其中的内容。
开发者
2019/12/26
3.1K0
关于 Android 中的各种 Bar 和“透明状态栏”的一些知识
DrawerLayout详解「建议收藏」
drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。
全栈程序员站长
2022/07/04
2.8K0
DrawerLayout详解「建议收藏」
如何使用Vue.js和Axios来显示API中的数据
Vue.js是一个用于构建用户界面的前端JavaScript框架。 它的设计从头开始逐步采用,并与其他图书馆或现有项目完美集成。 这使它非常适合小型项目以及与其他工具和库一起使用的复杂单页应用程序。
子润先生
2021/06/15
10.1K0
Qt创建菜单栏,工具栏,状态栏
QMainWindow允许在其上创建菜单栏,工具栏和状态栏,我们就在QMainWindow上来创建它们。直接上代码,代码中有详细的注释。
zy010101
2020/04/08
5.2K0
Qt创建菜单栏,工具栏,状态栏
【QT】QT菜单栏、状态栏、工具栏
菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能有一个菜单栏。
半生瓜的blog
2023/05/13
1.6K0
点击加载更多

相似问题

AVRootView于DrawerLayout冲突?

2548

如何使用原始查询、实体框架和MVC来计数?

1138

JavaScript来显示工具提示?

2392

如何在Android中使用SharedPreferences来存储和获取编辑值?

2497
相关问答用户
新浪微博 | 高级总监擅长4个领域
某公司 | 程序员擅长1个领域
擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档