引用另一种样式的特定属性

时间:2014-10-17 12:41:21

标签: android android-layout

我试图找到使用xml匹配EditText旁边标签文本大小的最佳方法。 我宁愿不直接继承EditText样式,因为这会带来一堆我不感兴趣的属性。

<EditText
    android:id="@+id/editQuantity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/textUnit"
    style="@style/FontMatchingEditText"
    android:text="units"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

有没有办法引用另一种风格的特定属性?

否则,为了确保它与标签保持一致,为EditText制作自己的风格会更有意义吗?

修改

我希望可能有一种独立于主题的方式,语义上是这样的:

<item name="android:textSize">@android:style/Widget.EditText.textAppearance.textSize</item>

但我可能过于复杂了。 谢谢!

1 个答案:

答案 0 :(得分:0)

假设您的父主题为android:Theme.Holo.Light

来自\android-sdk\platforms\android-X\data\res\values\themes.xml

<style name="Theme.Holo.Light" parent="Theme.Light">
    ...
    <!-- Widget styles -->
    <item name="editTextStyle">@android:style/Widget.Holo.EditText</item>

来自\android-sdk\platforms\android-X\data\res\values\styles.xml

<style name="Widget.Holo.EditText" parent="Widget.EditText">
</style>

<style name="Widget.EditText">
    ...
    <item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
    <item name="android:textColor">?android:attr/editTextColor</item>
</style>

现在,您可以只为EditText重复用于TextView的主题属性:

<TextView
    android:id="@+id/textUnit"
    android:textColor="?android:attr/editTextColor"
    android:textAppearance="?android:attr/textAppearanceMediumInverse"
    android:text="units"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />