当我输入文本时如何更改TEXT EDIT控件的颜色,并在输入完成后再次更改颜色

时间:2017-03-10 12:15:43

标签: android android-edittext

当我输入文字时如何更改TEXT EDIT控件的颜色,并在完成输入后再次更改颜色。

键入后我需要黑色文字,如果我去下一个编辑文本,前一个应该是白色。还有一件事我把所有edittexts放在列表视图中。我怎么得到? 在此先感谢。

4 个答案:

答案 0 :(得分:4)

只需将焦点更改的侦听器创建为全局变量即可。

View.OnFocusChangeListener listener = new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                ((EditText) v).setTextColor(hasFocus ? Color.BLACK : Color.WHITE);
            }
        };

现在将该侦听器设置为您在列表视图上创建的edittext。

editText.setOnFocusChangeListener(listener);

因此,当您在edittext中时,其颜色将为黑色,当您离开edittext时,颜色将更改为白色,下一个聚焦的edittext将变为黑色。

答案 1 :(得分:1)

简单有效的解决方案

res/color 文件夹textcolorselector.xml

内创建
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="#FFF"/>
    <item android:state_focused="true" android:color="#000"/>
    <item android:color="#000"/>
</selector>

现在是editext。

  <EditText

        android:textColor="@color/textcolorselector">

        <requestFocus />

    </EditText>

答案 2 :(得分:0)

试试这个

etEmail.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                etEmail.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                etEmail.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.defaultColor));
            }
        });

答案 3 :(得分:0)

您可以使用TextWatcher

实施例

    yourEditText.addTextChangedListener(new TextWatcher()
    {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
            //do stuff
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        { 
           //do stuff
        }

        @Override
        public void afterTextChanged(Editable s)
        { 
            //do stuff
        }
    });