使用Holo父主题从Theme.Light继承editText

时间:2013-06-27 14:56:12

标签: android inheritance android-theme

我希望从editText继承android:Theme,而我的父主题为android:Theme.Holo.Light
有没有“干净”的方法来将android sdk文件夹中的资源复制到我的项目中?

2 个答案:

答案 0 :(得分:12)

所以我的想法是从android:Theme.Holo.Light扩展自定义主题(实际上只是一种风格),然后覆盖EditText属性以使用android:Theme中的父设置。

看起来android:Theme.Holo.Light使用editTextStyle属性引用来更改EditTexts的外观:

<item name="editTextStyle">@android:style/Widget.Holo.Light.EditText</item>

因此,您可以使用editTextStyle中的android:Theme覆盖它:

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

然后,您所要做的就是在清单中应用YourTheme(或者如果您真的想在代码中),以获取自定义主题。您可能需要进一步调整内容,请在此处查看所有库存主题:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

修改

我刚刚测试了这一点,并意识到似乎android:style/Widget.EditText似乎没有应用旧版Android的背景,很可能是因为它使用android:editTextBackground的引用,Holo.Light 1}}集。我只是尝试手动将android:editTextBackground更改为旧版EditText drawable,它对我有用。

注意:仅对styles.xml /values-v11下的android:editTextBackground应用此调整,因为只有版本3.0并且可以使用EditText,旧的Android版本已经使用旧的<style name="YourTheme" parent="android:Theme.Holo.Light"> <item name="android:editTextStyle">@android:style/Widget.EditText</item> <item name="android:editTextBackground">@android:drawable/edit_text</item> </style> {1}}背景。如果app min是&gt; = API 11,则无需担心这一点。

{{1}}

答案 1 :(得分:0)

是的,您创建一个styles.xml并将样式父级设置为您想要的任何内容。 : - )

如何定义样式的示例:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
            <item name="android:layout_width">fill_parent</item>
            <item name="android:layout_height">wrap_content</item>
            <item name="android:textColor">#00FF00</item>
            <item name="android:typeface">monospace</item>
        </style>
    </resources>

像这样使用这种风格:

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

在这里阅读更多相关信息:

http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles