【问题标题】:Is the shadow between the status bar and toolbar desired for material design apps?Material Design 应用程序是否需要状态栏和工具栏之间的阴影?
【发布时间】:2016-05-16 16:48:35
【问题描述】:

我注意到 Android Studio 上的 Google 模板在状态栏和工具栏之间有一点阴影。我的平面设计师认为我不应该拥有它,但我只是不知道,因为模板有它。

正确的做法是什么?

以下是使用 Android Studio 模板和零代码修改创建的应用的两个屏幕截图。

编辑:澄清一下,我知道这是因为<item name="android:statusBarColor">@android:color/transparent</item> 而发生的,这实际上是需要的,因为在我的应用程序上我有一个导航抽屉。但我的问题不是如何解决它,我想知道这是否是谷歌希望它工作的方式?

另外我应该提到我只测试棒棒糖和棉花糖。

【问题讨论】:

    标签: android material-design android-support-library android-support-design


    【解决方案1】:

    不,它不应该在那里。状态栏应该是平坦的,没有任何阴影。看看这个页面:https://www.google.com/design/spec/style/color.html#color-color-schemes

    这是我的透明状态栏,带有一个在 Marshmallow 上运行的抽屉。影子不在那里。

    主题:

    <item name="android:windowTranslucentStatus">true</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    

    我正在使用修改后的 ScrimInsetsFrameLayout 绘制彩色插图 - https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java


    编辑

    确切地说,这个布局是由以下 xml 构造的:

    <carbon.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                xmlns:app="http://schemas.android.com/apk/res-auto"
                                android:id="@+id/drawerLayout"
                                android:layout_width="match_parent"
                                android:layout_height="match_parent">
    
        <carbon.widget.LinearLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:orientation="vertical"
            app:carbon_insetColor="?attr/colorPrimary"/>
    
        <carbon.widget.NavigationView
            android:id="@+id/drawerMenu"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="?attr/carbon_colorBackground"
            android:fitsSystemWindows="true"
            android:orientation="vertical"
            app:carbon_elevation="@dimen/carbon_elevationDrawer"
            app:carbon_insetTop="0dp"/>
    
    </carbon.widget.DrawerLayout>
    

    可以在这里找到完整的来源:https://raw.githubusercontent.com/ZieIony/Carbon/master/samples/src/main/res/layout/activity_navigationview.xml

    带有 insets 的布局将其内容向下推,并在 inset 空间上绘制彩色矩形。这是内容布局。抽屉菜单的布局与其根类似,但它的 insets 设置为 0dp,因此菜单可以占用所有屏幕空间。 fitsSystemWindows 标志是关键。

    【讨论】:

    • 所以您将其用作主要活动布局的第一个视图?
    • 我查看了 io schedule 应用程序代码,但没有看到他们在哪里使用该框架布局,它还说它已被弃用。我将它添加到直接从模板制作的新项目中,并将工具栏推到状态栏下方。
    • 正如我所说,这是一个修改版本。 ScrimInsetsFrameLayout 并不完美,但对我来说是一个好的开始。它用于以前版本的 Google 应用程序。我在答案中添加了更多细节。我不想将 Carbon 添加到答案中,因为它太大而无法用作示例。
    猜你喜欢
    • 2015-03-26
    • 2016-04-25
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2016-10-27
    • 2017-07-13
    相关资源
    最近更新 更多