我意识到在dimens.xml
中我可以选择指定整个应用程序中使用的值。所以我可以设置类似的东西:
<dimen name="layoutFont">22dp</dimen>
但是,按照我设置的方式,我必须为layoutLargeFont
和layoutXlargeFont
创建类似的声明,然后我必须手动更改布局文件中的所有这些变量。
有没有办法对单个变量进行声明:layoutFont
在大型或XLarge布局中使用时其值不同?
答案 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>
您可以更进一步,定义textAppearanceSmall
,textAppearanceMedium
和textAppearanceLarge
。
<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 here和also here)。有了这一切,你不应该为任何事情设置任何textSize,除非它是出于特定目的。