Question

When a user enters information in an EditText, and moves to the next EditText, the information is highlighted as shown below:

Edit Text Background

The code for this:

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);
    }

   }
});

Which is called in the onCreate method like this:

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

However, It would be much better if the background color only applied to the text itself, rather than the view, like this (from the gmail app):

gmail ideal output

Does anybody have any suggestions on how to apply the background color to the text only (not the whole EditText view) as above?

Thanks.

Was it helpful?

Solution

You can achieve what you want by using a BackgroundColorSpan. You can find more information here:

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

To use spans you need to build a SpannableString which you can do using a SpannableStringBuilder:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top