web-dev-qa-db-ja.com

アプリウィジェットのテキストを簡単に消す方法はありますか?

Androidのアプリウィジェット内でテキストを簡単に入力できる方法があるかどうか疑問に思っていました。通常のアクティビティでは、textviewフラグを使用すると非常に簡単です。

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

しかし、アプリのウィジェットでは、リモートビューしか使用できないため...これが可能かどうかわかりません

誰もこれについて何か知っていますか?

ありがとう!

130
Antonio

これを使用できます:

remoteviews.setInt(R.id.YourTextView, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);

もちろん、Android.graphics.Paintクラスから他のフラグを追加することもできます。

57
agirardello

他のビューではテストされていない、textviewでプログラム的に実行するには>>

TextView tv = (TextView) findViewById(R.id.mytext);
tv.setText("This is strike-thru");
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
179
ruhalde

プログラムでそれを行う別の方法は、ペイント方法よりもハックのように見えます:

代わりに:

tv.setText(s);

行う:

private static final StrikethroughSpan STRIKE_THROUGH_SPAN = new StrikethroughSpan();
...
tv.setText(s, TextView.BufferType.SPANNABLE);
Spannable spannable = (Spannable) tv.getText();
spannable.setSpan(STRIKE_THROUGH_SPAN, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
77
BoD

2015 Update:皆さん、これは非常に古いバージョンのAndroid用です。最新のソリューションに関する他の回答をご覧ください!


テキストビュー全体を打ち消すには、特定の背景画像を使用して取り消し線効果をシミュレートできます。

Android:background="@drawable/bg_strikethrough"

bg_strikethrough drawableは9パッチで、中央を通る実線を維持し、どちらの側でも成長します。私はこのようなものを使用しました:

alt text

(わかりやすくするために拡大.. 1300%!)

alt text

これが私のHDPIバージョンなので、最初のバージョン( http://i.stack.imgur.com/nt6BK.png )をres/drawable-hdpi/bg_strikethrough.9.pngとして保存すると、構成は次のように機能します。

alt text

59
ohhorob

これを行うには、これを使用できます

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

削除するには、これを使用できます

 title.setPaintFlags(title.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
22
pavel

単一のWordがある場合、drawableを使用できます。次に例を示します。

<item Android:state_pressed="false"><shape Android:shape="line">
        <stroke Android:width="2dp" Android:color="#ffffff" />
    </shape>
</item>

複数の行がある場合は、次のコードを使用できます。

TextView someTextView = (TextView) findViewById(R.id.some_text_view);
someTextView.setText(someString);
someTextView.setPaintFlags(someTextView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG)
19
Akshay Mukadam

複数行のTextViewの場合、次のようにAndroid.text.style.CharacterStyleを使用する必要があります。

SpannableString spannable = new SpannableString(text);
spannable.setSpan(new StrikethroughSpan(), 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
remoteViews.setTextViewText(R.id.itemText, spannable);
10
user3768270

文字列を使用している場合、本当に簡単です。

<string name="line"> Not crossed <strike> crossed </strike> </string>

それからちょうど:

<TextView 
        ...
         Android:text="@string/line"
 />
8
Ignacio Alorre

以下の行を追加します:-

TextView tv=(TextView) v.findViewById(Android.R.id.text1);
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

「tv」の代わりに参照を使用します

コトリンの皆さんすべてのための拡張機能があります

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)

制限

取り消し線はテキストと同じ色にしかできません

(つまり、赤色のテキストと青色の取り消し線は使用できません)

3
Michael

このコードを試してください

textview.setText((Html.fromHtml("<strike>hello world!</strike>")));
3
Abhishek c

ドロアブルを作成する

<?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"

2
Akshay More

私はいくつかのオプションを試しましたが、これは私にとって最適です:

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

乾杯

1

あなたが追加する:

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

you変数に設定/追加します:

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

次に、variableTvに.setPaintFlagsを追加します。

variableTv.setPaintFlags(variableTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
0
Briliant Fay

私は、古い質問に答えていることを知っています。それは、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が開始位置、8が終了位置であるため、このコードを実行した後、テキストを「必要」に取り消し線で取得できます。それが他の誰かに役立つことを願っています。

0
Ram Koti

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 studioレイアウトプレビューではレンダリングされないことに注意してください。最後にAndroid St​​udio 3.3.1でテスト済み

たとえば、取り消し線は次のようになります。

<string name="cost"><strike>$10</strike> $5 a month</string>
0
Ilya Gazman