高度和阴影错误的工具栏

Toolbar with a wrong height and shadow

我正在尝试使用高度和设计库向工具栏添加阴影。布局代码类似于:

<android.support.design.widget.CoordinatorLayout ... >
  <android.support.design.widget.AppBarLayout ... >
    <android.support.design.widget.CollapsingToolbarLayout ... >
       <android.support.v7.widget.Toolbar
           android:id="@+id/app_bar"
           android:layout_width="match_parent"
           android:layout_height="?actionBarSize"
           app:contentInsetStart="16dp"
           android:background="@color/colorPrimary"
           android:elevation="16dp"
        />
    </android.support.design.widget.CollapsingToolbarLayout>
  </android.support.design.widget.AppBarLayout>

完整的应用程序源代码可在 github 上获得。

问题是工具栏高度或阴影的行为与我预期的不同。如果您观看下面的屏幕截图,您会发现问题所在。

我需要做的是显示蓝色区域下方的阴影。

非常感谢任何提示。

将高度移至 AppBarLayout。 CollapsingToolbarLayout 的大小发生变化,因此在 AppBarLayout 上设置它会在正确的位置创建阴影。

<android.support.design.widget.CoordinatorLayout ... >
<android.support.design.widget.AppBarLayout
      android:elevation="16dp">
  <android.support.design.widget.CollapsingToolbarLayout ... >
     <android.support.v7.widget.Toolbar ... />
  </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

如前所述 ,这是通过 CollapsingToolbarLayout 的实施实现的 - 如果 CollapsingToolbarLayout 显示非固定元素,则移除海拔高度:

if (Math.abs(verticalOffset) == scrollRange) {
  // If we have some pinned children, and we're offset to only show those views,
  // we want to be elevate
  ViewCompat.setElevation(layout, layout.getTargetElevation());
} else {
  // Otherwise, we're inline with the content
  ViewCompat.setElevation(layout, 0f);
}

因此,我只能建议通过从 Google 复制原始 CollapsingToolbarLayout 来制作您自己的 CollapsingToolbarLayout,并在这种情况下进行更改。