在我的项目(具有AppCompat支持的Target API 21)中,我需要扩展EditText类。我的问题是MyEditText类不继承自定义的EditText样式:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" >
    <item name="colorPrimary">@color/primary</item>
    <item name="colorControlNormal">@color/grey_light</item>
    <item name="colorControlActivated">@color/primary</item>
    <item name="colorControlHighlight">@color/primary</item>
</style>

带有@color/primary绿色

截屏:

  • 第1行:关注EditText
  • 第2行:EditText未聚焦(启用)
  • 第3行:MyEditText未聚焦(启用)


  • 我的问题是:如何继承EditText中的默认MyEditText样式?

    最佳答案

    有一种非常非常非常简单的方法。

    与其继承自android.widget.EditText自定义EditText,不如继承此类并查看其是否有效:

    android.support.v7.internal.widget.TintEditText
    

    链接到类(class):TintEditText.java

    阅读该类(class)的Javadoc,他说:
    /**
     * An tint aware {@link android.widget.EditText}.
     * <p>
     * This will automatically be used when you use {@link android.widget.EditText} in your
     * layouts. You should only need to manually use this class when writing custom views.
     */
    

    在此页面的大部分内容中,(Using Support Library APIs)具有的注意事项,它是:使用支持库中的类时,请确保您从适当的软件包中导入了该类。例如,当应用ActionBar类时:

    使用支持库时的
  • android.support.v7.app.ActionBar。
  • 仅针对API级别11或更高级别进行开发时的
  • android.app.ActionBar。

  • 我对此进行了解释,也就是说,如果您使用的是支持库,请始终尝试导入或继承相应的程序包。 (没有什么比这写的大声笑了:D)

    10-06 14:14
    查看更多