我想从android:Theme继承editText,而我的父主题是android:Theme.Holo.Light.
有没有“干净”的方法来做到这一点,没有将android sdk文件夹中的资源复制到我的项目中?
最佳答案
所以我的想法是从android:Theme.Holo.Light扩展一个自定义主题(实际上只是一种风格),然后覆盖EditText属性以使用android:Theme中的父设置.
它看起来像android:Theme.Holo.Light使用editTextStyle属性引用来更改EditTexts的外观:
所以你可以用android:Theme中的editTextStyle覆盖它:
然后,您所要做的就是在您的清单中应用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设置.我只是尝试将android:editTextBackground手动更改为遗留的EditText drawable,它对我有用.
注意:仅在/ values-v11下的styles.xml上应用此调整,因为只有3.0版本并且可以使用android:editTextBackground,而旧版本的android将已经使用旧的EditText背景.如果app min是> = API 11,则无需担心这一点.