如何引用包含文本样式项的样式

时间:2017-02-14 05:48:39

标签: android android-theme

我有两个主题,
AppTheme - 适用于整个申请和 AppTheme.NoActionBar - 用于导航活动

在这两个主题中,我都是文字样式。

<!-- 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>

如何对文本样式项进行分组并在这两个主题中引用它们?

我试过了:

<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>  

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

它不起作用。
我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

请参阅:https://stackoverflow.com/a/3166865/5018798

我的例子(基于上述):

<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>

答案 1 :(得分:0)

您可以执行以下操作:

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

将清单中的应用主题设置为Apptheme:

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

你必须这样做,否则文字颜色不会改变:

<style name="AppTheme.NoActionBar" parent = "AppTheme">