为什么无法在 toolbarStyle 的主题中为工具栏设置 layout_height 和 layout_width?

Why is it not possible to set layout_height and layout_width for toolbar in theme with toolbarStyle?

挑战:我正在尝试通过默认工具栏主题为工具栏设置 layout_height 和 layout_width,如下所示:

在我的主题中我有:

<item name="toolbarStyle">@style/Toolbar</item>

和工具栏样式:

<style name="Toolbar" parent="Widget.AppCompat.Toolbar">
    <item name="android:background">@color/colorBackground</item>
    <item name="android:titleTextColor">@color/colorTextToolbar</item>
    <item name="android:layout_height">?attr/actionBarSize</item>
    <item name="android:layout_width">match_parent</item>
</style>

问题:layout_heightlayout_width 没有从我的主题中删除,当我从我的工具栏中删除 android:layout_heightandroid:layout_width 时,工具栏完全消失并显示错误说缺少这些属性。虽然 android:backgroundandroid:titleTextColor 实际上是从我的主题中提取的。

我尝试了什么:Here 我读到我必须在顶部添加 <resources xmlns:android="http://schemas.android.com/apk/res/android">。这实际上没有效果,顶部已经有 <resources xmlns:tools="http://schemas.android.com/tools">

您知道为什么这不起作用吗?这可能是由于 inflater 如何从样式的优先级获取属性?

更新:似乎toolbarStyle 不允许设置工具栏的高度和宽度。我想这可能在 android 文档中的某处定义,但我无法找到确切位置。当我点击工具栏对象时,我发现

public Toolbar(@NonNull Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, R.attr.toolbarStyle);
}

作为 Constructur,所以它需要 R.attr.toolbarStyleR.attr.toolbarStyle 作为参数,当我查看 toolbarStyle 属性时,我只能看到
<attr format="reference" name="toolbarStyle"/>,这并没有让我知道“toolbarStyle”的真正设置。有办法找出来吗?

您需要将样式应用于 Toolbar:

  <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/Toolbar"
        android:background="@android:color/transparent" />