Цвет текста текста TextView для Android
Как я могу добиться такого эффекта с помощью Android TextView. Это похоже на выделенный текст, и я не мог найти что-то подобное в API.
Это не цвет фона для представления, а цвет фона только для текста. Вы можете видеть, как он останавливается при разрыве строк и имеет тонкую белую линию между текстовыми строками.
![Screenshot]()
Ответы
Ответ 1
Насколько я вижу, нет никакого "приятного" способа сделать это без переопределения 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
, чтобы изменить внешний вид растянутого текста.
Ответ 2
<TextView
android:background="#0000FF"
android:textColor="#FFFFFF" />
Определял бы TextView
с синим фоном и белым текстом... это то, что вам нужно?
Ответ 3
Я считаю, что есть более простой и приятный способ добиться этого: просто создайте 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);
Я думаю, этого должно быть достаточно.
Спасибо
Ответ 4
Используйте этот пример
<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
Ответ 5
Попробуйте это под textview
в .xml
файле:
<TextView android:background="#0000FF">
Ответ 6
Если вы хотите сделать это из 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);
Ответ 7
Просто установите длину TextView как match_parent
, предположив, что он вложен в родительское значение, которое охватывает всю длину экрана, и ваш текст будет иметь одинаковую длину, но поле будет увеличиваться на всю длину экран.
Ответ 8
Попробуйте использовать это для цвета фона текста
<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"/>
Ответ 9
Вы можете добавить еще один макет вокруг 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>