材料设计用于EditText子类

9
在API 21中,我们可以使用colorAccent来改变像EditTextRadioButton等小部件的颜色。但是它不适用于这些小部件的子类。我已经尝试过这个,但它就像colorAccent一样,只适用于原始小部件。
除了创建自定义可绘制对象并将其实现为样式之外,还有其他解决方案吗?

2
“EditText的子类”是什么意思?你是说如果扩展EditText,那么colorAccent就不适用了吗? - Squonk
@Squonk 是的..我通过扩展原始EditText来创建了一个自定义EditText,但colorAccent不适用于我的自定义EditText。 - Dark Leonhart
3个回答

12

要应用colorAccent,只需从android.support.v7.widget.AppCompatEditText扩展您的自定义EditText类即可。


1
@DarkLeonhart,这个类是用于支持库的内部使用的,但我不知道还有其他方法。 - AndrOvip

11

实际上,从Android支持库版本22.1开始,您应该继承AppCompatEditText。


这个解决方案在Marshmallow上崩溃了。 - Johann
不,它不会这样,也许你在做一些不同的事情。 - Jessicardo

0

由于您没有发布任何源代码,我猜测您不是从XML布局中膨胀视图,而是调用了新的MyCustomEditText。

正如开发者网站所述:只有在使用布局膨胀器加载视图时才能应用材料主题设计。

这是因为新的材料设计后移钩入了布局膨胀过程。

另一个原因可能是因为appcompat v7库仅在XML布局中找到EditText时才加载材料设计。它无法识别自定义视图组件。

谷歌计划将Material后移小部件发布给公众,他们表示这些目前仍在开发中。您可能想覆盖这些特殊的后移小部件,这可能会解决您的问题。但是由于它们尚未公开...您无法这样做。


我通过xml调用了我的自定义视图,并通过onCreateView进行了填充,所以我想我需要等待吗? - Dark Leonhart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接