Android:主题对较旧的Apis没有影响

时间:2016-05-31 09:40:36

标签: android toolbar android-theme

我一直在尝试使用支持库自定义工具栏。虽然设置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 +中显示白色图标,旧设备上的图标保持黑色。

更新:我通过向appBarLayout添加另一个孩子(tabLayout)进行测试。主题已正确应用。但是,即使直接设置,支持工具栏也完全拒绝识别主题。

3 个答案:

答案 0 :(得分:3)

经过几天的挣扎,我终于找到了问题所在。我的布局是在调用super.onCreate()之前设置的,无论出于何种原因,这使得工具栏在未使用本机工具栏的pre-lolipop设备中不应用正确的主题。

所以我确定了:

setContentView(R.layout.main);

之后:

super.onCreate(savedinstancestate);

答案 1 :(得分:0)

嘿,你必须使用版本号制作样式文件。 为此,请转到值并右键单击,然后单击“值资源”文件 然后将文件命名为样式,然后在选项可用限定符下的对话框中选择版本文件,然后按图标&gt;&gt;然后在其上输入版本19,此文件将适用于低于Api 21 +

的版本

this is the dialog you will get on click of value Resource file

this is the final dialog where you need to enter your version number

它可能对你有帮助。

答案 2 :(得分:0)

您已在基于API版本的文件夹中设置主题样式并应用,因此它将根据API版本进行应用。

将主题放在styles.xml中。 然后在values文件夹中为不同的基于API级别的文件夹复制styles.xml [根据你的要求你必须创建value-X文件夹] 请参考下图。

Click here to view image