textColor переопределяет textColorPrimary и textColorPrimaryDark - PullRequest
0 голосов
/ 13 ноября 2018

Я применил тему к своему приложению, но когда я использую свойства 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:textColor. Я хочу, чтобы мой заголовок / большой текст использовал textColorPrimary , а для средних и малых я хочу использовать textColorPrimaryDark , как сказано в их документации.

до этого цвет текста кнопки устанавливается textColorPrimary.

Как я могу использовать двухцветную цветовую схему для всего моего приложения. используя textColorPrimary и textColorPrimaryDark.

Или я должен создать два textStyle и установить их для каждого View. Есть ли лучший подход для достижения того, чего я хочу.

enter image description here

1 Ответ

0 голосов
/ 13 ноября 2018

Вам нужно определить два стиля и установить там нужные атрибуты.Он чище и понятнее.А также хорошее поведение, чтобы установить свой собственный стиль в 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"
           ........ />

Удалите теги ниже в вашем приложенииtheme:

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

Назначение другого цвета:

TextColor - это просто атрибут xml для установки цвета текста любого данного представления.

TextColorPrimary - это цвет текста по умолчанию для включенных кнопок и больших текстовых представлений.

TextColorSecondary - это цвет текста по умолчанию для средних и маленьких текстовых представлений.

colorPrimaryDark - это цвет строки состояния.

Для этого необходимо удалить textColor, который переопределяет другие цвета.

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

внутри вашего textView в xml.Затем он будет применять его ко всем вашим представлениям.Таким образом, вам не нужно устанавливать стиль для всех ..

...