Android:Theme 对较旧的 API 没有影响



我一直在尝试使用支持库自定义我的工具栏。 虽然设置 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 文件夹]请参考下图。

点击这里查看图片

最新更新