需求

Button随EditText输入状态改变颜色

有3个不同颜色状态,

EditText未输入时,Button处于不可点击状态

EditText输入时,Button处于高亮状态

EditText输入且用户按下按钮,Button --> Pressed状态

效果如下:

演示图片

EditText在没有输入时,Button不可点击,为灰色状态

EditText输入后,Button可点击,且背景变为蓝色

EditText输入后,点击Button时,Button背景色变为红色

解决思路

EditText的输入通过添加addTextChangedListener来监听

Button的点击颜色变化使用selector来控制

遇到的问题

在根据以上的实现思路实现时,遇到了一些问题

问题一:在Selector中使用android:color属性报错

button_selector.xml代码:

应用崩溃的错误日志:

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #0: tag requires a 'drawable' attribute or child tag defining a drawable

日志提示在item子节点中必须要求有drawable属性,根据错误信息将所有color属性替换成了drawable,修改后的button_selector.xml如下:

问题二:selector没有作用,Button按下时颜色并没有改变

给Button的background属性设置了button_selector

然后在EditText. addTextChangedListener中的onTextChanged方法中检测EditText的输入状态

editText.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

//EditText输入状态改变,Button背景颜色也改变

if ("".equals(editText.getText().toString().trim())) {

button.setBackgroundColor(Color.GRAY);

button.setEnabled(false);

} else {

button.setBackgroundColor(ContextCompat.getColor(context, R.color.color_blue));

}

}

@Override

public void afterTextChanged(Editable s) {

}

});

在EditText中输入字符后,Button背景色变为蓝色,但是pressed时却没有变成红色,背景还是蓝色,发现是button.setBackgroundColor(ContextCompat.getColor(context, R.color.color_blue));把Button的背景色给写死了,所以Button的颜色没办法改变

解决方案

整理了下问题,最后想到了一个解决方案,在布局文件中,把Button的background的属性由selector设置为不可点击颜色灰色android:background="@android:color/darker_gray",然后在onTextChanged()中,当EditText输入时,设置Button的background为selector,而不是写死颜色,这样就可以解决在EditText输入时,点击Button背景颜色却无法变化的问题!

editText.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

//EditText输入状态改变,Button背景颜色也改变

if ("".equals(editText.getText().toString().trim())) {

button.setBackgroundColor(Color.GRAY);

button.setEnabled(false);

} else {

//设置selector来控制Button背景颜色

button.setBackground(ContextCompat.getDrawable(context,

R.drawable.button_input_selector));

button.setEnabled(true);

}

}

@Override

public void afterTextChanged(Editable s) {

}

});

android输入时背景颜色,Button根据EditText输入状态改变背景颜色相关推荐

  1. android edittext底线,Android定制自己的EditText轻松改变底线颜色

    最近做 android 项目遇到这个问题,为了保持 app 风格一致,需要将原生的edittext底线颜色改成橙色.网上搜了一些解决方案,特此记录总结一下. 效果图 默认的edittext底线颜色是蓝 ...

  2. Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果...

    <Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果> 实现的组件交互目的很简单,就是要达到类似tab选项卡的导航栏一样,当用户点击了连续并排的若 ...

  3. android+单机button+设置背景图片,button设置点击更改背景图片

    给button设置背景图片很简单,设置点击时的背景也简单,做一个selector选择器就好了.当我想在点击时和松开后背景不再改变回去时遇到了麻烦,无论怎么设置selector都不起作用.无奈上网求救, ...

  4. qt int转换成qstring_「QT界面编程实例」创建颜色下拉框并改变窗体颜色(调色板)...

    [实例]Qt创建窗体下拉框并改变窗体颜色:QPalette.QColor.QPixmap.QSize.QIcon.QStringList.QString 本例是想创建一个颜色下拉框(颜色是自动从QCo ...

  5. html改游戏聊天字体颜色,html点击按钮改变字体颜色怎么实现

    html点击按钮改变字体颜色的实现方法:1.创建一个html文件:2.在html文件中添加html代码架构:3.在body标签里面使用button标签实现一个按钮,并使用style给按钮添加样式以及使 ...

  6. 计算机过去与未来ppt背景图,过去无可挽回未来可以改变背景图高清图片大全

    过去无可挽回未来可以改变背景图高清图片大全是一组在抖音上面很火爆的表情包图片,一组超多内容可以去查看的素材.会让用户在线很简单的进行下载,还可以免费的就会让用户进行使用.大量会帮助到用户进行保存的内容 ...

  7. html图片颜色变深,利用CSS改变图片颜色的100种方法!

    前言 "说到对图片进行处理,我们经常会想到PhotoShop这类的图像处理工具.作为前端开发者,我们经常会需要处理一些特效,例如根据不同的状态,让图标显示不同的颜色.或者是hover的时候, ...

  8. java bufferedimage颜色_java – BufferedImage意外地改变了颜色

    我有以下代码,它创建灰度Buffered Image,然后设置每个像素的随机颜色. import java.awt.image.BufferedImage; public class Main { p ...

  9. HTML顶部状态栏更改背景,html css导航菜单点击后改变背景图片

    首先给菜单设置默认的图片背景(background: url(icon1.png) no-repeat;),然后编写点击后的样式,包括修改图片背景(background: url(icon2.png) ...

最新文章

  1. 【怎样写代码】工厂三兄弟之工厂方法模式(二):解决方案 I
  2. linux备份一个脚本,发个备份脚本 - Linux系统与应用 - LinuxApp - 水木社区
  3. 不是python中用于开发用户界面的第三方库-Python三方库:wxPython(GUI图形用户界面)...
  4. Ant Design 3.0 使用案例
  5. js改变css样式_React 中使用CSS的7种方法
  6. 如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO
  7. 53 - II. 0~n-1中缺失的数字
  8. SlideSwitch仿iphone滑动开关组件,仿百度魔图滑动开关组件Android
  9. 海思uboot启动流程详细分析(二)
  10. 删除不需要的iPhone语言文件
  11. Microsoft.Web.Mvc Assembly 说明
  12. 趣学Python-教孩子学编程--第三章
  13. 3月21日短线黑马牛股公开验证
  14. 如何正确获得Android内外SD卡路径
  15. oracle 磁带备份,磁带备份 - Linux下实现自动备份Oracle数据库_数据库技术_Linux公社-Linux系统门户网站...
  16. Android-涂鸦板
  17. android配置阿里云仓库
  18. 工业元宇宙 三人行系列直播 12场规划
  19. Vitis 加速环境简介
  20. 数学建模写作时相关的套路

热门文章

  1. 机器学习朴素贝叶斯算法+tkinter库界面实现好瓜坏西瓜分类
  2. char *与char []
  3. 快速傅里叶变换(完整推导过程 + 模板)
  4. 斗地主(矩阵快速幂)
  5. CF938G Shortest Path Queries(线性基/线段树分治/异或)
  6. P4146 序列终结者 平衡树 + lazy维护
  7. CF1167F. Scalar Queries
  8. cf451E. Devu and Flowers(产生不同多重集数量)
  9. Building Fire Stations
  10. CodeForces730E Award Ceremony(拓扑排序+结论)