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

Tom*_*Tom 3 android android-edittext android-background

当用户在EditText中输入信息并移动到下一个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.LTGRAY); //also works like this
        ((EditText) v).setBackgroundColor(Color.LTGRAY);
        ((EditText) v).setTextColor(Color.BLACK);
    }

   }
});
Run Code Online (Sandbox Code Playgroud)

在这样的onCreate方法中调用:

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

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

gmail理想的输出

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

谢谢.

Rom*_*Guy 8

你可以通过使用a来实现你想要的BackgroundColorSpan.您可以在这里找到更多信息:

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

要使用跨度,您需要构建一个SpannableString可以使用以下内容执行的操作SpannableStringBuilder:

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