Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在编辑过程中,如何在Android中更改Android EditText的背景和字体颜色?_Android_Android Edittext - Fatal编程技术网

在编辑过程中,如何在Android中更改Android EditText的背景和字体颜色?

在编辑过程中,如何在Android中更改Android EditText的背景和字体颜色?,android,android-edittext,Android,Android Edittext,我有一个EditText显示用户定义的文本标签。 它显示为带白色字母的蓝色背景 但是当用户点击它时,我希望它变为带黑色字母的白色背景,以表明它处于编辑模式 然后,当这个人点击退出时,我希望它像以前一样在蓝色上变回白色。此外,如果输入的文本比显示宽,我希望它左对齐 我如何才能做到这一切?请尝试以下方法: edittext.setOnFocusChangeListener(new OnFocusChangeListener() { @Override pub

我有一个EditText显示用户定义的文本标签。 它显示为带白色字母的蓝色背景

但是当用户点击它时,我希望它变为带黑色字母的白色背景,以表明它处于编辑模式

然后,当这个人点击退出时,我希望它像以前一样在蓝色上变回白色。此外,如果输入的文本比显示宽,我希望它左对齐

我如何才能做到这一切?

请尝试以下方法:

    edittext.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                v.setBackgroundColor(Color.WHITE);
                ((EditText) v).setTextColor(Color.BLACK);
            } else {

                v.setBackgroundColor(Color.BLUE);
                ((EditText) v).setTextColor(Color.WHITE);
            }

        }
    });

实现这一目标的方法多种多样。就像你可以用textwatcher做这件事一样

public void afterTextChanged(Editable s) {}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) 
{
 // do some operation on text of text1 field
 // do some operation on text of text2 field 
}
我不确定你们能否在布局上做到这一点。尝试在布局中使用选择器。也许这行得通。对于文本颜色,使用单独的选择器;对于编辑文本背景,使用另一个选择器。选择器的格式如下所示:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:color="" /> <!-- pressed -->
     <item android:state_focused="true"
           android:color="" /> <!-- focused -->
     <item android:color="" /> <!-- default -->
 </selector>


在颜色属性中填充所需颜色。

您可以使用textWatcher进行如下尝试

 EditText text=new EditText(this);
 text.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    //change the color before editing

}

@Override
public void afterTextChanged(Editable s) {
    //change the color after edited
}
});

我想这可能对你有帮助。

谢谢。可以在XML布局管理器中执行此操作吗?还有-如何在焦点丢失时左对齐?不是真的-这不会改变颜色,除非用户开始键入xml,否则xml不适用于EditText。此外,TextWatcher不起作用,因为它只在用户开始键入时注册。