是否有一个简单的方法来通过应用程序小部件中的文本?
我想知道是否有一个简单的方法来敲打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中执行,在其他视图中未经testing>>
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更新:伙计们,这是非常旧的Android版本。 查看现代解决scheme的其他答案!
要浏览整个文本视图,可以使用特定的背景图像来模拟删除线效果:
android:background="@drawable/bg_strikethrough"
如果bg_strikethrough
drawable是一个在中间保持一条固定线的9块补丁,那么在任何一边都可以,不pipe填充多less,你认为是合理的。 我用过这样的一个:
(为了清晰起见,放大了1300%!)
这是我的HDPI版本,所以保存(第一个http://i.stack.imgur.com/nt6BK.png )为res/drawable-hdpi/bg_strikethrough.9.png
,configuration将如下工作:
如果你有一个单词,我们可以使用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,这真的很容易:
<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);
用你的参考而不是“电视”
为了做到这一点,你可以使用这个
title.setPaintFlags(title.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
和删除,你可以使用这个
title.setPaintFlags(title.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
你join:
TextView variableTv = (TextView) findViewById(R.id.yourText);
你设置/添加你variables:
variableTv.setText("It's Text use Style Strike");
然后在variableTv中添加.setPaintFlags:
variableTv.setPaintFlags(variableTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
我已经在一个常规的(本地) TextView
上完成了这个工作,并且它应该在远程TextView
工作,因为文档将这个方法列为两者之间的等价方法:
remote_text_view.setText(Html.fromHtml("This is <del>crossed off</del>."));