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