Цвет текста текста TextView для Android

Как я могу добиться такого эффекта с помощью Android TextView. Это похоже на выделенный текст, и я не мог найти что-то подобное в API.

Это не цвет фона для представления, а цвет фона только для текста. Вы можете видеть, как он останавливается при разрыве строк и имеет тонкую белую линию между текстовыми строками.

Скриншот

Solutions Collecting From Web of "Цвет текста текста TextView для Android"

Насколько я вижу, нет никакого «приятного» способа сделать это без переопределения TextView и рисования пользовательских красок в представлении, которое включает цвет пробелов.

Даже установка свойства lineSpacingExtra расширяет только цвет фона.

Вы также можете потенциально изучить создание пользовательского spannable и использовать его как

 Spannable str = new SpannableStringBuilder("How can I achieve such an effect with an Android TextView. It looks somehow like selected text and I couldn't find something similar in the API."); str.setSpan(new NewSpannableClass(), 0, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ((TextView)findViewById(R.id.text)).setText(str); 

Где NewSpannableClass является настраиваемой функцией spannable.

Увидев, как многие люди ленивы, чтобы посмотреть, как создавать пользовательские spannables, вот пример

 public class CustomSpannable extends ClickableSpan { @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setUnderlineText(true); } } 

Этот пример подчеркнет текст. Используйте TextPaint чтобы изменить внешний вид TextPaint текста.

 <TextView android:background="#0000FF" android:textColor="#FFFFFF" /> 

Определял бы TextView с синим фоном и белым текстом … это то, что вам нужно?

Я считаю, что есть более простой и приятный способ добиться этого: просто создайте backgroundColorSpan и добавьте его в SpannableString. Что-то в этом роде:

 public static SpannableString buildBackgroundColorSpan(SpannableString spannableString, String text, String searchString, int color) { int indexOf = text.toUpperCase().indexOf(searchString.toUpperCase()); try { spannableString.setSpan(new BackgroundColorSpan(color), indexOf, (indexOf + searchString.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } catch (Exception e) { } return spannableString; } 

Где «spannableString» – это объект SpannableString, созданный и предполагаемый для инициализации «текстом»; «SearchString» представляет фрагмент текста, который вы хотите «выделить» в своем TextView, и «цвет» цвета фона, на который должен быть установлен «выделенный» текст.

 String text = "The Quick Brown Fox Jumps over the Lazy Dog"; String searchString = "brown"; int color = Color.parseColor("#FFF5F19E"); SpannableString spannableString = new SpannableString(text); spannableString = StringUtils.buildBackgroundColorSpan(spannableString, text, searchString, color); 

Я думаю, этого должно быть достаточно.

благодаря

Используйте этот пример

  <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#0000FF" android:textColor="#FFFFFF" /> 

Для выбора цвета используйте эту ссылку http://html-color-codes.info/

Красный: # 750A0A

Синий: # 002BFF

Зеленый цвет: # 33FF00

Белый: #FFFFFF

Черный: # 000000

Попробуйте это ниже textview в .xml файле:

 <TextView android:background="#0000FF"> 

Если вы хотите сделать это из XML, попробуйте решение других людей, которые просто ответили так:

  <TextView android:id="@+id/TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textColor="#ffffff" android:background="#1bgtbgt"/> 

Если вы хотите сделать это из кода активности, вы можете изменить его динамически, например, попробуйте:

 text.setBackgroundColor( int color); 

Просто установите длину TextView как match_parent предположив, что он вложен в родительское значение, которое охватывает всю длину экрана, и ваш текст будет иметь одинаковую длину, но поле будет увеличиваться по всей длине экрана.

Попробуйте использовать это для текста фона

  <TextView android:id="@+id/comment_dis" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="Stack Overflow android:textColor="#ffffff" android:background="#3cabdc"/> 

Вы можете добавить еще один макет вокруг TextView и установить его фон в желаемый цвет

 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#000000" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#FFFFFF" android:text="@string/text" /> </LinearLayout>