能不能实现EditText中有文字时和无文字时背景颜色不一样

ShaoXKun 2018-04-20 11:11:44
能不能实现EditText中有文字时和无文字时背景颜色不一样
...全文
542 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
键盘舞者113 2018-04-21
  • 打赏
  • 举报
回复
可以,实时监听EditText是否有输入文字,如果有文字改变背景颜色,如果没有文字就还原

        et.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.e("输入过程中执行该方法", "文字变化");
                if (s.toString() == null || s.toString() == "") {
                    et.setBackgroundColor(Color.WHITE);
                } else {
                    et.setBackgroundColor(Color.RED);
                }
            }
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {
            }
            @Override
            public void afterTextChanged(Editable s) {
            }
        });
neweast0183 2018-04-21
  • 打赏
  • 举报
回复
说实话我不知道,但我想可以先获取它的内容在通过内容的空值检查,调用EditText的相关方法。我还真不知道有没有可以改变背景色的方法。
键盘舞者113 2018-04-21
  • 打赏
  • 举报
回复
引用 3 楼 ShaoXKun 的回复:
用这个方法,向文本框里输入内容的时候确实会使背景颜色变化,但是把文本框里内容清除之后背景颜色却不发生改变。
改好了

public class TwoActivity extends AppCompatActivity {


    EditText et;
    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == 0x111) {
                et.setBackgroundColor(Color.WHITE);
            } else if (msg.what == 0x222) {
                et.setBackgroundColor(Color.RED);
            }
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);

         et = (EditText)findViewById(R.id.et);

        TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                if (et.getText().toString().equals("")
                        || et.getText().toString() == null) {
                    // 为空,不可点击
                    Message msg = Message.obtain();
                    msg.what = 0x111;
                    handler.sendMessage(msg);
                } else {
                    // 非空,可点击
                    Message msg = Message.obtain();
                    msg.what = 0x222;
                    handler.sendMessage(msg);
                }
            }
        };
        Timer timer = new Timer();
        timer.schedule(timerTask, 0, 100);

    }


}
r00_a2lBUR 2018-04-21
  • 打赏
  • 举报
回复
做一个线程,看这个文本框有没有文字,有文字设置一种背景,没有文字设置一种背景
ShaoXKun 2018-04-21
  • 打赏
  • 举报
回复
用这个方法,向文本框里输入内容的时候确实会使背景颜色变化,但是把文本框里内容清除之后背景颜色却不发生改变。

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧