所以我的想法是有一个自定义主题(实际上只是一种风格),它延伸自android:Theme.Holo.Light
,然后覆盖EditText
使用父级设置的属性android:Theme
.
看起来像android:Theme.Holo.Light
使用一个editTextStyle
属性引用来更改外观EditTexts
:
<item name="editTextStyle">@android:style/Widget.Holo.Light.EditText</item>
所以你可以用editTextStyle
from 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 https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml
Edit
我刚刚对此进行了测试并意识到似乎android:style/Widget.EditText
似乎没有应用旧版本 Android 的背景,很可能是因为它使用了对android:editTextBackground
, which Holo.Light
套。我刚刚也尝试过改变android:editTextBackground
手动到遗产EditText
可绘制,它对我有用。
注意:仅将此调整应用于您的styles.xml
under /values-v11
,因为只有3.0版本并且可以使用android:editTextBackground
,并且旧版本的android将已经使用旧的EditText
背景。如果应用程序最小值 >= API 11,则无需担心这一点。
<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>