TextAppearance未在某些API版本

时间:2015-09-02 14:24:21

标签: android themes android-styles

我有一个用XML创建的视图。然后,视图显示在两个片段之一上。可以是暂停菜单,替换我游戏活动中的棋盘,也可以是DialogFragment轮次结束时的乐谱摘要。

我的摘要中的每个TextView都使用在视图主题中声明的属性设置其textAppearance。这在我运行API 22的索尼Xperia Z3 Compact上没有问题。但是,我的妻子手机上似乎没有应用文本外观。她的是运行API 19的Z3 Compact。我还有一台运行API 17的平板电脑也有同样的问题。

在每个有问题的设备上,所有文本都以非常小的文字大小显示。它还忽略了样式设置的textColor。

每个组件的XML看起来像是一个变体:

<TableRow android:id="@+id/view_score_summary_group_overall_time">
    <TextView
        android:text="@string/time"
        android:textAppearance="?scoreSummaryTextAppearanceHeading"
        />
    <TextView android:id="@+id/view_score_summary_game_time"
        android:layout_column="2"
        android:textAppearance="?scoreSummaryTextAppearanceData"
        />
</TableRow>

然后在我的主题中定义属性,如下所示:

<style name="ScoreSummary.Light">
    <item name="scoreSummaryTextAppearanceHeading">@style/ScoreSummary.Light.TextAppearance.Heading</item>
    <item name="scoreSummaryTextAppearanceTitle">@style/ScoreSummary.Light.TextAppearance.Title</item>
    <item name="scoreSummaryTextAppearanceData">@style/ScoreSummary.Light.TextAppearance.Data</item>
</style>

然后定义样式:

<style name="ScoreSummary">
</style>
<style name="ScoreSummary.Light">
</style>
<style name="ScoreSummary.Light.TextAppearance">
    <item name="android:textColor">@color/text_score_summary_light</item>
</style>
<style name="ScoreSummary.Light.TextAppearance.Title">
    <item name="android:textSize">24sp</item>
</style>
<style name="ScoreSummary.Light.TextAppearance.Heading">
    <item name="android:textSize">16sp</item>
    <item name="android:gravity">start</item>
</style>
<style name="ScoreSummary.Light.TextAppearance.Data">
    <item name="android:textSize">16sp</item>
    <item name="android:gravity">end</item>
</style>

然后我在视图(我的游戏活动)上设置主题,如下所示:

<com.abc.def.ScoreSummaryView android:id="@+id/fragment_game_score_summary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="4dp"
    android:layout_gravity="center"
    android:theme="@style/ScoreSummary.Light"
    />

到目前为止,我尝试了很多方法:

  1. 在TextView上单独设置属性。

    android:textSize="150sp"
    

    这很有用。但是如果你必须在每个组件上设置它,那么为什么还要烦恼。

  2. 设置textAppearanceSmall而不是textAppearance。基于this。这只是使所有文字略大,但仍然不适用我的风格。

  3. 设置样式而不是textAppearance。这与设置textAppearanceSmall。
  4. 的结果相同
  5. 使我的样式声明扩展为“android:attr / textAppearance”。没有改变什么,我不知道为什么会这样,但我绝望了。
  6. 我现在已经看了好几年了,而且我已经尝试使用谷歌搜索一大堆东西,但却无法到达任何地方。

    这看起来不错。在我的平板电脑上 - 虽然它在我的妻子手机上看起来很相似。

    This is it looking wrong. On my tablet - though it looks similar on my wifes phone 这是它应该看起来的样子。在我的手机上。

    This is how it's supposed to look. On my phone.

0 个答案:

没有答案