如何在所有屏幕尺寸上仅设置一次Android字体尺寸?

时间:2014-03-28 15:39:47

标签: android

我意识到在dimens.xml中我可以选择指定整个应用程序中使用的值。所以我可以设置类似的东西:

<dimen name="layoutFont">22dp</dimen>

但是,按照我设置的方式,我必须为layoutLargeFontlayoutXlargeFont创建类似的声明,然后我必须手动更改布局文件中的所有这些变量。

有没有办法对单个变量进行声明:layoutFont在大型或XLarge布局中使用时其值不同?

2 个答案:

答案 0 :(得分:3)

中添加您的dimens.xml
  values-large  and values-xlarge

答案 1 :(得分:2)

您可以为主题指定TextAppearance。这将应用于使用主题的默认文本外观的任何TextView(和TextView的子类)。

<style name="MyApp.Theme" parent="android:Theme.Holo">
    <!-- other theme attrs -->
    <item name="android:textAppearance">@style/TextAppearance</item>
</style>

<style name="TextAppearance" parent="android:TextAppearance">
    <item name="android:textSize">@dimen/layout_font</item>
</style>

您可以更进一步,定义textAppearanceSmalltextAppearanceMediumtextAppearanceLarge

<style name="MyApp.Theme" parent="android:Theme.Holo">
    <!-- other theme attrs -->
    <item name="android:textAppearance">@style/TextAppearance</item>
    <item name="android:textAppearanceSmall">@style/TextAppearance.Small</item>
    <item name="android:textAppearanceMedium">@style/TextAppearance.Medium</item>
    <item name="android:textAppearanceLarge">@style/TextAppearance.Large</item>
</style>

<style name="TextAppearance" parent="android:TextAppearance">
    <item name="android:textSize">@dimen/layout_font</item>
</style>

<style name="TextAppearance.Small">
    <item name="android:textSize">@dimen/layout_font_small</item>
</style>

<style name="TextAppearance.Medium">
    <item name="android:textSize">@dimen/layout_font_medium</item>
</style>

<style name="TextAppearance.Large">
    <item name="android:textSize">@dimen/layout_font_large</item>
</style>

当然,您可以使用适当的资源限定符来定义这些维度(我建议使用最小宽度限定符,-sw ### dp,described herealso here)。有了这一切,你不应该为任何事情设置任何textSize,除非它是出于特定目的。