我一直在尝试使用支持库自定义我的工具栏。 虽然设置 Android:theme 在 API21+ 上完美运行,但较低的 API 似乎完全忽略了它。
这是我的XML:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
使工具栏在 API21+ 中具有白色图标,但在较旧的设备上图标仍为黑色。
更新:我通过将另一个子项(选项卡布局)添加到我的应用栏布局进行了测试。 主题已正确应用。 但是,即使直接设置,支持工具栏也完全拒绝识别主题。
经过几天的挣扎,我终于找到了问题所在。 我的布局是在调用super.onCreate()之前设置的,无论出于何种原因,这使得工具栏在未使用本机工具栏的lolipop设备中无法应用正确的主题。
所以我确保:
setContentView(R.layout.main);
之后:
super.onCreate(savedinstancestate);
您必须使用版本号制作样式文件。为此,请转到值并右键单击,然后单击值资源文件然后将文件命名为样式,然后在可用选项下的对话框中 限定符 选择版本文件,然后按图标>>,然后在上面输入版本 19,此文件将适用于低于 Api 21+ 的版本
这是您将在单击值资源文件时获得的对话框
这是您需要输入版本号的最后一个对话框
它可能会对你有所帮助。
您已在基于 API 版本的文件夹中设置了主题样式并应用,以便根据 API 版本应用主题样式。
将主题放在样式中.xml。然后复制样式.xml在基于不同 API 级别的文件夹的值文件夹中[根据您的要求,您必须创建 value-X 文件夹]请参考下图。
点击这里查看图片