Androidのアプリウィジェット内でテキストを簡単に入力できる方法があるかどうか疑問に思っていました。通常のアクティビティでは、textviewフラグを使用すると非常に簡単です。
textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
しかし、アプリのウィジェットでは、リモートビューしか使用できないため...これが可能かどうかわかりません
誰もこれについて何か知っていますか?
ありがとう!
これを使用できます:
remoteviews.setInt(R.id.YourTextView, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
もちろん、Android.graphics.Paintクラスから他のフラグを追加することもできます。
他のビューではテストされていない、textviewでプログラム的に実行するには>>
TextView tv = (TextView) findViewById(R.id.mytext);
tv.setText("This is strike-thru");
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
プログラムでそれを行う別の方法は、ペイント方法よりもハックのように見えます:
代わりに:
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);
2015 Update:皆さん、これは非常に古いバージョンのAndroid用です。最新のソリューションに関する他の回答をご覧ください!
テキストビュー全体を打ち消すには、特定の背景画像を使用して取り消し線効果をシミュレートできます。
Android:background="@drawable/bg_strikethrough"
bg_strikethrough
drawableは9パッチで、中央を通る実線を維持し、どちらの側でも成長します。私はこのようなものを使用しました:
(わかりやすくするために拡大.. 1300%!)
これが私のHDPIバージョンなので、最初のバージョン( http://i.stack.imgur.com/nt6BK.png )をres/drawable-hdpi/bg_strikethrough.9.png
として保存すると、構成は次のように機能します。
これを行うには、これを使用できます
title.setPaintFlags(title.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
削除するには、これを使用できます
title.setPaintFlags(title.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
単一の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)
複数行の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);
文字列を使用している場合、本当に簡単です。
<string name="line"> Not crossed <strike> crossed </strike> </string>
それからちょうど:
<TextView
...
Android:text="@string/line"
/>
以下の行を追加します:-
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)
制限
取り消し線はテキストと同じ色にしかできません
(つまり、赤色のテキストと青色の取り消し線は使用できません)
このコードを試してください
textview.setText((Html.fromHtml("<strike>hello world!</strike>")));
ドロアブルを作成する
<?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"
私はいくつかのオプションを試しましたが、これは私にとって最適です:
String text = "<strike><font color=\'#757575\'>Some text</font></strike>";
textview.setText(Html.fromHtml(text));
乾杯
あなたが追加する:
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);
私は、古い質問に答えていることを知っています。それは、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が終了位置であるため、このコードを実行した後、テキストを「必要」に取り消し線で取得できます。それが他の誰かに役立つことを願っています。
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 Studio 3.3.1でテスト済み
たとえば、取り消し線は次のようになります。
<string name="cost"><strike>$10</strike> $5 a month</string>