0

I've two themes,
AppTheme - for entire application and
AppTheme.NoActionBar - for navigation activity

In both the themes I've text styling.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textColor">@color/black_shade</item>
    <item name="android:textSize">@dimen/text_size</item>
    <item name="android:windowFullscreen">true</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textColor">@color/black_shade</item>
    <item name="android:textSize">@dimen/text_size</item>
    <item name="android:windowFullscreen">true</item>
</style>

How do I group text-style-items and refer them in these two themes?

I've tried:

<style name="TextAppearance" >
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textColor">@color/black_shade</item>
    <item name="android:textSize">@dimen/text_size</item>
    <item name="android:windowFullscreen">true</item>
</style>  

And referred it by

    <item name="textAppearance">@style/TextAppearance</item>

It's not working.
How do I achieve this?

Prabs
  • 4,923
  • 6
  • 38
  • 59

2 Answers2

2

See: https://stackoverflow.com/a/3166865/5018798

My example (based on above):

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="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:textViewStyle">@style/TextAppearance</item>

    </style>

    <style name="AppTheme.NoActionBar" parent="AppTheme">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>

        <item name="android:textViewStyle">@style/TextAppearance</item>
    </style>

    <style name="TextAppearance" parent="android:Widget.TextView">
        <item name="android:textColor">#F00</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">55sp</item>
    </style>

</resources>
Community
  • 1
  • 1
Gavin Harris
  • 652
  • 5
  • 15
0

You can do the following:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    ...
    <item name="android:textColorPrimary">Your color</item>
    ...
</style>

And set application theme in manifest to Apptheme:

<application
    ...
    android:theme="@style/AppTheme"
    .... 
    >

And you have to do this certainly otherwise text color won't change:

<style name="AppTheme.NoActionBar" parent = "AppTheme"> 
tahsinRupam
  • 6,325
  • 1
  • 18
  • 34
  • 1
    there might be 100's of `TextView` in my app. And `textColor` is not the only attribute I have – Prabs Feb 14 '17 at 06:17