ConstraintLayout的子级不继承父级的主题

时间:2019-07-01 17:37:00

标签: android inheritance layout constraints themes

我正在开发一个可以在夜间和白天模式之间切换的应用程序。为此,我想为ConstraintLayout设置主题,以便它的孩子将继承此主题,但是他们不会...

我的意思是特别是TextView颜色,即使我在ConsColortLayout主题设置了textColor属性为浅色的情况下,TextView仍然保持深色。

有人知道这是怎么回事吗?还是我做错了什么?

该主题在styles.xml中进行了描述,我尝试设置其他两个属性-textAppearance和textViewStyle,它们都不起作用。我也尝试过在styles-v21中设置它无效。但是,当我直接在TextView中设置此主题时,它确实可以工作。但是我想避免花费太多时间手动更改所有TextView,也不想浪费处理器时间在所有视图上调用findViewById ...

这是父ConstraintLayout属性:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_constraint_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/drawerColorDark"
    android:gravity="bottom"
    android:theme="@style/AppThemeDark.Drawer">

其中一个TextViews:

<TextView
            android:id="@+id/drawer_all_articles_text"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:gravity="center"
            android:text="All Articles"
            android:textSize="18sp"
            app:layout_constraintStart_toEndOf="@+id/drawer_all_articles_icon"
            app:layout_constraintTop_toTopOf="parent" />

还有样式代码(在此示例中,仍然没有太多原因试图继续继承...):

 <style name="AppThemeDark" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppThemeDark.Drawer" parent="AppThemeDark">
        <item name="android:textColor">@color/drawerTextDark</item>
        <item name="android:textAppearance">@color/drawerTextDark</item>
        <item name="android:textViewStyle">@color/drawerTextDark</item>
    </style>

    <style name="AppThemeDark.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

非常感谢,

0 个答案:

没有答案