Search code examples
androidxmlandroid-layoutandroid-theme

Android: how to use color from style in XML of another layout


I got this style in XML:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppTheme.Base"/>

    <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->

        <!-- colorPrimary is used for the default action bar background -->
        <item name="colorPrimary">@color/teal_500</item>

        <!-- colorPrimaryDark is used for the status bar -->
        <item name="colorPrimaryDark">@color/teal_700</item>

        <!-- colorAccent is used as the default value for colorControlActivated
             which is used to tint widgets -->
        <item name="colorAccent">@color/light_blue_500</item>

        <!-- needed to suppress the old ActionBar when using the new Toolbar -->
        <item name="android:windowActionBar">false</item>

        <!-- You can also set colorControlNormal, colorControlActivated
             colorControlHighlight & colorSwitchThumbNormal. -->
    </style>

</resources>

Question:

And inside the XML of a Fragment I'm using TextView onto which I would like to assign "colorPrimary" from the theme. But how?

    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/text_input"
              android:textColor="@android:color/black"   <!-- use theme color here-->
              android:fontFamily="sans-serif-bold"
              android:text="some text"
              android:textSize="24dp"/>

Solution

  • You can use like this

    <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/text_input"
                  android:textColor="?attr/colorPrimary"   
                  android:fontFamily="sans-serif-bold"
                  android:text="some text"
                  android:textSize="24dp"/>