当前位置: 首页 > 知识库问答 >
问题:

使用appcompat v7自定义EditText样式

夹谷鸿福
2023-03-14

我创建了一个扩展EditText的自定义视图,并指定了一个属性样式来更改背景色调颜色。

public class CustomEditText extends EditText {

    public CustomEditText (Context context) {
        this(context, null);
    }

    public CustomEditText (Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.customEditTextStyle);
    }

    public CustomEditText (Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs,  R.attr.customEditTextStyle);
    }
    // Some other code...
}

然后我添加了一个属性样式:

<resources>
    <attr name="customEditTextStyle" format="reference" />
<resources>

我正在使用主题。AppCompat在我的应用程序。我已经覆盖了色彩主、色彩主暗色和色彩重音。

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/blue</item>
    <item name="colorPrimaryDark">@color/blue_dark</item>
    <item name="colorAccent">@color/blue_accent</item>
    <item name="customEditTextStyle">@style/CustomEditText</item>
</style>
<style name="CustomEditText" parent="Widget.AppCompat.EditText">
    <item name="colorPrimary">@color/blue</item>
    <item name="colorPrimaryDark">@color/blue_dark</item>
    <item name="colorAccent">@color/blue_accent</item>
</style>

editText背景色工作正常,但是,我不能对自定义editText执行相同的操作。

我尝试过使用这段代码,但它改变了整个状态,因此所有状态都使用相同的颜色。(https://stackoverflow.com/a/28433337)

editText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);

有没有办法在自定义视图中应用AppCompat样式?这是AppCompat问题还是我在CustomEditText中做错了什么?任何想法都将不胜感激。谢谢

共有2个答案

周弘毅
2023-03-14

通过扩展android解决了这个问题。支持v7。内部的小装置。编辑文本。

AppCompat不支持自定义视图的小部件着色。

锺离声
2023-03-14

从api 21开始,你必须子类AppCompatEdit文本。所有支持的小部件也是如此。使用AppCompat*获得着色和其他背面支持的功能。

 类似资料:
  • 本文向大家介绍Android EditText自定义样式的方法,包括了Android EditText自定义样式的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android EditText自定义样式的方法。分享给大家供大家参考,具体如下: 1.去掉边框 EditText的background属性设置为@null就搞定了:android:background="@null" sty

  • 出于性能考虑,HTML 中不允许使用内联 style,所有样式只能放到 <head> 的 <style mip-custom> 标签里。 正确方式: <head> <style mip-custom> p { color: #00f;} </style> </head> <body> <p>Hello World!</p> </body> 错误方式: <!-- 禁止使用 sty

  • 我正在使用Lollipop的新功能,比如coloraccent,colorPrimary,用于Lollipop制作前的设备。 styles.xml 现在我想为我的文本视图、编辑文本和按钮创建一个自定义字体。在样式中,我使用彩色口音作为白色。所以编辑文本的焦点应该是白色。查看下图以获取默认编辑文本焦点。这很好。 但每当我创建自定义字体edittext时,焦点行为就不同了。它没有显示白色。相反,它显示

  • 我尝试开发一个小android应用程序,并显示一个对话框警报,其中只包含一个edittext,以填充自定义内容作为下一个链接 创建自定义布局我有这个代码,但它不工作 } 但是代码循环运行 我不明白 在我班上的主要活动 我有这个密码 这是我的风格。xml 我的logcat是下一个 谢谢你的帮助,

  • 我试图使用Apache-POI在word(.docx)文档中创建标题。 我有一个模板,其中只包含自定义样式和标题使用自定义样式的例子。 编辑:如果我使用Apache-POI创建自己的风格,它就可以工作....不过,我真的很喜欢使用word文档中的现有样式。

  • 本节,我们将绘制四个三角形,并用不同的填充样式来填充每个三角形。HTML5的画布API提供的填充样式有颜色、线性渐变、径向渐变和图案。 图2-3 绘制自定义填充样式 按照以下步骤绘制4个三角形,一个使用颜色填充、一个使用线性渐变填充、一个使用径向渐变填充、一个使用图案填充: 1. 创建一个简单的函数,该函数绘制一个矩形: function drawTriangle(context, x, y,