EditText - 更改文本的背景颜色(仅限文本 - 而不是整个视图)

时间:2013-09-30 17:28:24

标签: android android-edittext android-background

当用户在EditText中输入信息并移至下一个EditText时,信息将突出显示,如下所示:

Edit Text Background

此代码:

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.LTGRAY); //also works like this
        ((EditText) v).setBackgroundColor(Color.LTGRAY);
        ((EditText) v).setTextColor(Color.BLACK);
    }

   }
});

onCreate方法中调用的方法如下:

edittext = (EditText) findViewById(R.id.editText1);

然而,如果背景颜色仅应用于文本本身而不是视图(例如来自gmail应用程序),那会好得多:

gmail ideal output

有人对如何将背景颜色仅应用于文本(而不是整个EditText视图)有任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:8)

您可以使用BackgroundColorSpan来实现您想要的效果。您可以在此处找到更多信息:

http://developer.android.com/reference/android/text/style/BackgroundColorSpan.html

要使用跨度,您需要使用SpannableString构建SpannableStringBuilder

http://developer.android.com/reference/android/text/SpannableStringBuilder.html