我希望从editText
继承android:Theme
,而我的父主题为android:Theme.Holo.Light
。
有没有“干净”的方法来将android sdk文件夹中的资源复制到我的项目中?
答案 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