Android风格继承

时间:2014-02-28 14:25:08

标签: android android-styles

我的应用的文字可以是黑色或白色;小,中,大;粗体或不粗体。我无法找到一种方法来制作覆盖所有基础的样式,而不需要仅仅包含大量的样式并重复所有内容。有没有办法以某种方式减少这种情况或一次应用多个?

<style name="Text">
    <item name="android:textSize">12sp</item>
    <item name="android:textColor">#000000</item>
    <item name="android:textStyle">normal</item>
</style>

<style name="Text.Small">
    <item name="android:textSize">8sp</item>
</style>

<style name="Text.Large">
    <item name="android:textSize">18sp</item>
</style>

<style name="Text.Small.Bold">
    <item name="android:textStyle">bold</item>
</style>

<style name="Text.Large.Bold">
    <item name="android:textStyle">bold</item>
</style>

<style name="Text.White">
    <item name="android:textColor">#ffffff</item>
</style>

<style name="Text.White.Small">
    <item name="android:textSize">8sp</item>
</style>

<style name="Text.White.Large">
    <item name="android:textSize">18sp</item>
</style>

<style name="Text.White.Small.Bold">
    <item name="android:textStyle">bold</item>
</style>

<style name="Text.White.Large.Bold">
    <item name="android:textStyle">bold</item>
</style>

其中一半是字面上重复的,从不同的父样式继承。我觉得在CSS中实现这一点非常简单,不会重复这样的事情。我是不是在Android中这样做了?或者我在这里可以看到什么?

2 个答案:

答案 0 :(得分:0)

为避免代码重复,您只能将该项声明一次,并使用parent attribute从其他样式中引用它。

使用您提供的代码的示例:

<style name="Text.Small.Bold">
    <item name="android:textStyle">bold</item>
</style>

<style name="Text.Large.Bold">
    <item name="android:textStyle">bold</item>
</style>

可以改为:

<style name="Text.Small.Bold">
    <item name="android:textStyle">bold</item>
</style>

<style name="Text.Large.Bold" parent="Text.Small.Bold" />

答案 1 :(得分:0)

我已经挖过了,但似乎没有办法让Android本地化。我只想在每种风格中留下重复的部分,并且足以说明这是DRYest它可以在这种情况下。