Есть ли простой способ зачеркнуть текст в виджете приложения? - PullRequest
130 голосов
/ 07 октября 2010

Мне было интересно, есть ли простой способ выделить текст в виджете приложения в Android.В обычной деятельности это довольно просто, используя флажки textview:

textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

Но поскольку в виджете приложения я могу использовать только удаленные виды ... Я не знаю, возможно ли это

Кто-нибудь знает что-нибудь об этом?

Спасибо!

Ответы [ 17 ]

1 голос
/ 13 марта 2019

создать рисование

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="line">
            <stroke android:width="1dp"
                android:color="@color/onePlusRed" />
        </shape>
    </item>
</selector>

и используйте его в качестве переднего плана.
android:foreground="@drawable/strike_through"

1 голос
/ 17 января 2018

Я пробовал несколько вариантов, но это лучше всего работает для меня:

String text = "<strike><font color=\'#757575\'>Some text</font></strike>";
textview.setText(Html.fromHtml(text));

ура

1 голос
/ 02 апреля 2019

Это расширение для всех вас, котлинцев

fun TextView.showStrikeThrough(show: Boolean) {
    paintFlags =
            if (show) paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
            else paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
}

Использование

textView.showStrikeThrough(true)

Ограничение

Зачеркивание может иметь тот же цвет, что и текст

(т. Е. Красный и синий зачеркивание невозможно)

0 голосов
/ 15 марта 2018

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

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("Text need to be set here", TextView.BufferType.SPANNABLE);
Spannable spannable = (Spannable) textView.getText();
spannable.setSpan(new StrikethroughSpan(), 5, 8, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

Итак, в этом примере кода 5 запускаетсяposition и 8 - это конечная позиция текста, которую необходимо вычеркнуть, поэтому после выполнения этого кода мы можем получить текст "need" с вычеркнутым.Надеюсь, это будет полезно для кого-то еще.

0 голосов
/ 04 апреля 2017

Вы добавляете в:

TextView variableTv = (TextView) findViewById(R.id.yourText);

Вы устанавливаете / добавляете в Вас переменную:

variableTv.setText("It's Text use Style Strike");

и затем добавьте .setPaintFlags в переменную TV:

variableTv.setPaintFlags(variableTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
0 голосов
/ 03 апреля 2019

Ресурсы Android имеют довольно хорошую Поддержка разметки HTML
Поддерживаются следующие HTML-элементы:

Bold: <b>, <em>
Italic: <i>, <cite>, <dfn>
25% larger text: <big>
20% smaller text: <small>
Setting font properties: <font face=”font_family“ color=”hex_color”>. Examples of possible font families include monospace, serif, and sans_serif.
Setting a monospace font family: <tt>
Strikethrough: <s>, <strike>, <del>
Underline: <u>
Superscript: <sup>
Subscript: <sub>
Bullet points: <ul>, <li>
Line breaks: <br>
Division: <div>
CSS style: <span style=”color|background_color|text-decoration”>
Paragraphs: <p dir=”rtl | ltr” style=”…”>

Обратите внимание, что он не отображается в предварительном просмотре макетов Android. Последняя проверка на Android Studio 3.3.1

Например, зачеркивание будет выглядеть так:

<string name="cost"><strike>$10</strike> $5 a month</string>
0 голосов
/ 07 октября 2010

Я сделал это на обычном (локальном) TextView, и он должен работать на удаленном множестве, так как документы перечисляют метод как эквивалент между двумя:

remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));

...