我有一个用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"
/>
到目前为止,我尝试了很多方法:
在TextView上单独设置属性。
android:textSize="150sp"
这很有用。但是如果你必须在每个组件上设置它,那么为什么还要烦恼。
设置textAppearanceSmall而不是textAppearance。基于this。这只是使所有文字略大,但仍然不适用我的风格。
我现在已经看了好几年了,而且我已经尝试使用谷歌搜索一大堆东西,但却无法到达任何地方。
这看起来不错。在我的平板电脑上 - 虽然它在我的妻子手机上看起来很相似。