在Android小部件中删除文本的子字符串
我的android小部件中有一个文本视图,我只需要划过特定的文本行。我在一个小部件中的另一个问题中发现了这一点:在Android小部件中删除文本的子字符串,android,textview,widget,android-widget,strikethrough,Android,Textview,Widget,Android Widget,Strikethrough,我的android小部件中有一个文本视图,我只需要划过特定的文本行。我在一个小部件中的另一个问题中发现了这一点: RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget); // strike through text, this strikes through all text views.setInt(R.id.appwidget_text, "setPaintFlags",
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
// strike through text, this strikes through all text
views.setInt(R.id.appwidget_text, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
问题是这会穿透文本视图中的所有文本。如何仅浏览文本视图的部分文本?使用and
例如,要获得以下效果,请参见下面的代码段:
更酷的效果Xoce的答案非常正确,但它更像是应用程序内文本视图的一般答案,但通过一些调整,我有办法为小部件实现这一点。(还要感谢Commonware将我推向了正确的方向 在updateAppWidget方法中,您可以使用远程视图将文本添加到textview。若要通过删除来自定义textview文本的子字符串,请使用可设置跨距的字符串生成器(您还可以使用不同的跨距来实现粗体、下划线、斜体等) 以下是我所做的:
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = NewAppWidgetConfigureActivity.loadTitlePref(context, appWidgetId, NewAppWidgetConfigureActivity.TEXT_KEY);
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(widgetText);
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableStringBuilder.setSpan(strikethroughSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
views.setTextViewText(R.id.appwidget_text, spannableStringBuilder);
...
}
也许可以使用
SpannableStringBuilder
和删除框span
在你自己的应用程序中使用TextView
就可以了;我没有尝试过通过remoteview
传递span
对象。我认为你在处理小部件时必须使用远程视图,这样span就不会工作,或者至少不会工作我找不到将span应用于远程视图的方法。使用CharSequence
,这通常意味着它接受SpannableStringBuilder
。哇。我觉得自己很笨。谢谢,这确实有效。我做了这么久,以至于完全忽略了它。我认为这不管用。你用小部件测试过这个吗?我是pretty确定您必须使用远程视图。我没有直接访问文本视图的权限。好的,我明白了…让我检查一下如何更改笔划颜色?ForegroundColorSpan更改文本颜色。
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
CharSequence widgetText = NewAppWidgetConfigureActivity.loadTitlePref(context, appWidgetId, NewAppWidgetConfigureActivity.TEXT_KEY);
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(widgetText);
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableStringBuilder.setSpan(strikethroughSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
views.setTextViewText(R.id.appwidget_text, spannableStringBuilder);
...
}