【问题标题】:Material design for subclass of EditTextEditText 子类的材料设计
【发布时间】:2014-10-31 08:24:49
【问题描述】:

在 API 21 中,我们可以使用 colorAccent 来更改 EditTextRadioButton 等小部件的颜色。但它不适用于这些小部件的子类。我试过this,但它就像colorAccent,它只适用于原始小部件。

有什么解决办法吗?除了必须创建自定义可绘制对象然后将其实现为样式之外..

【问题讨论】:

  • “EditText 的子类”是什么意思?你是说如果你扩展 EditText 那么 colorAccent 不适用?
  • @Squonk yup..我通过扩展原始 EditText 制作了自定义 EditText,但 colorAccent 不适用于我的自定义 EditText。

标签: android material-design


【解决方案1】:

对于应用 colorAccent 只需扩展您的自定义 EditText 类 android.support.v7.widget.AppCompatEditText

【讨论】:

  • @DarkLeonhart 这个类是供内部使用的支持库,但我不知道另一种方式
【解决方案2】:

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

【讨论】:

  • 这个解决方案在 Marshmallow 上崩溃了。
  • 不,它没有,也许你正在做一些不同的事情。
【解决方案3】:

由于您没有发布任何源代码,我猜您不是从 XML 布局中夸大您的视图,而是评估者调用 new MyCustomEditText。

正如开发者网站所说:材料主题设计只能在使用布局充气器加载视图时应用。

这是因为新的材料设计反向端口挂钩到布局膨胀过程。

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

Google 计划向公众发布 Material backport 小部件,他们表示这些小部件目前仍在开发中。您可能想要覆盖这些特殊的反向端口小部件,它可能会解决您的问题。但由于它们尚未公开......你不能。

【讨论】:

  • 我确实通过 xml 调用了我的自定义视图并通过 onCreateView 对其进行了膨胀..所以我想我需要等待吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2014-12-15
  • 1970-01-01
  • 2015-02-05
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多