Подтвердить что ты не робот

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

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

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

Screenshot

4b9b3361

Ответ 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>