代码之家  ›  专栏  ›  技术社区  ›  Zar E Ahmer

textColor覆盖textColorPrimary和textColorPrimaryDark

  •  0
  • Zar E Ahmer  · 技术社区  · 6 年前

    我已经将一个主题应用到我的应用程序中,但是当我使用textColor属性时,它会覆盖所有其他属性,比如textColorPrimary。

    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/windowBackground</item>
        <item name="android:textColorPrimary">#FF4081</item>
        <item name="android:textColorSecondary">#186925</item>
    
        <item name="colorControlActivated">#FF0000</item> <!-- for check box when checked -->
        <item name="colorControlNormal">#bbc40c</item> <!-- for check box when normal -->
        <item name="colorButtonNormal">#325289</item>
        <!--<item name="android:textColor">#084fe9</item>-->
        <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
    
        <!--<item name="android:windowActivityTransitions">true</item>
        <item name="android:windowEnterTransition">@android:transition/slide_right</item>
        <item name="android:windowExitTransition">@android:transition/slide_left</item>-->
    </style>
    
    <style name="AppTheme.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>
    <style name="HeaderText" parent="@android:style/TextAppearance.Large">
        <item name="android:textColor">#ffffffff</item>
        <item name="android:textSize">12dp</item>
    </style>
    <style name="WindowAnimationTransition">
        <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
        <item name="android:windowExitAnimation">@android:anim/fade_out</item>
    </style>
    

     <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/questionNumberTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:text="TextView"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <TextView
            android:id="@+id/scoreTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="17dp"
            android:layout_marginEnd="16dp"
            android:text="Score : 20"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <ImageView
            android:id="@+id/iconIv"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toStartOf="@+id/scoreTv"
            app:layout_constraintStart_toEndOf="@+id/questionNumberTv"
            app:layout_constraintTop_toTopOf="parent"
            tools:srcCompat="@tools:sample/avatars[11]" />
    
        <TextView
            android:id="@+id/questionTitle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="8dp"
            android:text="TextView"
            android:textAlignment="center"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/iconIv" />
    
        <Button
            android:id="@+id/fiftyfiftyBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:text="Button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/radioGroup2" />
    
        <RadioGroup
            android:id="@+id/radioGroup2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/questionTitle">
    
            <RadioButton
                android:id="@+id/option1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="RadioButton" />
    
            <RadioButton
                android:id="@+id/option2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="RadioButton" />
    
            <RadioButton
                android:id="@+id/option3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="RadioButton" />
    
            <RadioButton
                android:id="@+id/option4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="RadioButton" />
        </RadioGroup>
    
        <TextView
            android:id="@+id/votesTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="10dp"
            android:drawableLeft="@drawable/ic_expand_less_green_24dp"
            android:text="20"
            android:textSize="16sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/fiftyfiftyBtn" />
    
        <TextView
            android:id="@+id/commentCountTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="8dp"
            android:drawableLeft="@drawable/ic_expand_less_green_24dp"
            android:text="35"
            android:textSize="16sp"
            app:layout_constraintStart_toEndOf="@+id/votesTv"
            app:layout_constraintTop_toBottomOf="@+id/fiftyfiftyBtn" />
    
    </android.support.constraint.ConstraintLayout>
    

    当我取消注释时 android:textColor , android:textColorPrimary 颜色被覆盖 android:文本颜色 . 我想使用我的标题/大文本 文本主要颜色 对于中小型我想用 正如他们在文件中所说。

    我怎么可以使用两个文本颜色方案为我的整个应用程序。使用textColorPrimary和textColorPrimaryDark。

    或者我要创造两个 textStyle View . 有没有更好的方法来实现我想要的。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Zar E Ahmer    6 年前

    您需要定义两种样式并在那里设置所需的属性。它更清晰易懂。以及在textview中设置自己风格的良好行为。

    以下是您应该执行的示例:

    <style name="textStyle1" parent="android:TextAppearance">
                <item name="android:textColor">@color/textColorPrimary</item>
                <item name="android:textStyle">bold</item>
                <item name="android:textAppearance">?android:attr/textAppearanceLarge</item>
                <item name="android:gravity">start</item>
                <item name="android:textSize">22sp</item>
            </style>
    
            <style name="textStyle2" parent="android:TextAppearance">
                <item name="android:textColor">@color/textColorPrimaryDark</item>
                <item name="android:textStyle">normal</item>
                <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
                <item name="android:gravity">start</item>
                <item name="android:textSize">18sp</item>
            </style>
    

    <TextView
                android:id="@+id/tv_name"
                style="@style/textStyleMedium"
               ........ />
    

    删除应用程序主题上的以下标记:

    <item name="android:textColorPrimary">#FF4081</item>
            <item name="android:textColorSecondary">#186925</item>
            <!-- <item name="android:textColor">#084fe9</item> -->
    

    不同颜色的用途:

    文字颜色 只是将颜色设置为任何给定视图的文本的xml属性。

    是已启用按钮和大文本视图的默认文本颜色。

    是中小文本视图的默认文本颜色。

    原色深色

    为了做到这一点,你应该删除 textColor 覆盖其他颜色。

    android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
    

    在xml的textView中。然后它将应用于您的所有视图。以这种方式,您不必将样式设置为所有。。