Android 支持工具栏阴影 API > 19

Android Support Toolbar shadow API > 19

使用 android.support.v7.widget.Toolbar,我发现它在 API > 19 的设备中显示奇怪的阴影。

它在 Android 4.4.2 API 19:

中的样子

API >19:

我需要它看起来像 API 19,它没有任何阴影,而是 "integrates" 有背景.


因为我将此 Activity 与 DrawerLayout 一起使用,所以我有 2 个布局。

activity_main_tabbed.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_tabbed_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:openDrawer="right">

    <include
        layout="@layout/activity_main_tabbed_content"
        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="right"
        android:fitsSystemWindows="true" />

</android.support.v4.widget.DrawerLayout>

activity_main_tabbed_content.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:background="@drawable/activity_background_vertical"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:background="@android:color/transparent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/action_bar_height"
            android:elevation="0dp"
            android:background="@android:color/transparent"
            app:layout_scrollFlags="scroll|enterAlways">
            <ImageView
                android:layout_width="wrap_content"
                android:id="@+id/btn_toolbar_back"
                android:src="@drawable/left_white_arrow"
                android:visibility="gone"
                android:layout_height="match_parent"
                android:layout_marginRight="@dimen/btn_back_toolbar_margin_right"
                android:minHeight="@dimen/btn_back_toolbar_height"
                android:minWidth="@dimen/btn_back_toolbar_width"
                android:layout_gravity="left|center_vertical"/>
            <rokk3rlabs.dingding.utils.views.FontTextView
                android:layout_width="wrap_content"
                android:textSize="@dimen/toolbar_text_size"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"
                android:text="@string/toolbar_title"
                android:layout_gravity="left"
                android:id="@+id/toolbar_title" />

        </android.support.v7.widget.Toolbar>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="@dimen/action_bar_height"
            app:tabMode="fixed"
            android:elevation="0dp"
            app:tabGravity="fill"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout>

styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!--   <item name="android:windowBackground">@drawable/activity_background</item>-->
        <item name="android:textColorPrimaryInverse">@color/colorPrimary</item>
        <item name="android:textColorSecondaryInverse">@color/colorPrimary</item>
        <item name="android:colorBackground">@color/colorPrimaryDark</item>
        <item name="android:colorForeground">@color/colorPrimary</item>
        <item name="android:textColorPrimary">@color/colorPrimary</item>
        <item name="android:textColorSecondary">@color/colorPrimary</item>
        <item name="android:windowBackground">@color/colorPrimary</item>
    </style>

styles.xml (v21)

<style name="AppTheme" parent="Theme.AppCompat">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorPrimaryInverse">@color/colorPrimary</item>
    <item name="android:textColorSecondaryInverse">@color/colorPrimary</item>
    <item name="android:colorBackground">@color/colorPrimaryDark</item>
    <item name="android:colorForeground">@color/colorPrimary</item>
    <item name="android:textColorPrimary">@color/colorPrimary</item>
    <item name="android:textColorSecondary">@color/colorPrimary</item>
    <item name="android:navigationBarColor">@color/navigationBarColor</item>
    <item name="android:statusBarColor">@color/statusBarColor</item>
    <item name="android:windowBackground">@color/colorPrimary</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

使 AppBarLayout 具有纯色背景或设置其 app:elevation="0dp"不是 android:elevation)。

注:为什么每个颜色都设置为colorPrimary 很费解。紫色背景上的紫色文字不起作用。这也使得无法知道屏幕截图中应用栏布局的结束位置和 activity 背景的开始位置。