编辑小部件的文本,不受 RemotView 的限制

Posted

技术标签:

【中文标题】编辑小部件的文本,不受 RemotView 的限制【英文标题】:Edit text of widget without being limited by a RemotView 【发布时间】:2013-07-29 19:19:39 【问题描述】:

我有一个只包含一个 textView 的小部件,我希望能够根据用户偏好编辑 textView 的颜色、大小和字体。但似乎更新小部件的唯一方法是使用 RemoteView。这给我带来了两个问题:

1.) 这仅允许编辑文本、颜色和大小(但编辑大小仅在 API 16 中可用,我支持 11 及更高版本。)

2.) 这不允许我编辑字体。

幸运的是,textView 类http://developer.android.com/reference/android/widget/TextView.html 允许我做任何我想做的事情。有什么方法可以在我的小部件布局中的 textView 上调用这些方法,而不受 RemoteView 类的限制。

非常感谢所有帮助,这是我到目前为止的代码。

RemoteViews v = new RemoteViews(getPackageName(), R.layout.widget);
v.setTextViewText(R.id.widgetTextViewLineOne, widgetTextViewLineOneText);
v.setTextColor( R.id.widgetTextViewLineOne, widgetColor);
manager.updateAppWidget(awID, v);

【问题讨论】:

【参考方案1】:

如果您只想在低 API 中设置 testView 文本大小,请使用以下代码:  float textSize = 30.0f  v.setFloat(R.id.widgetTextViewLineOne, "setTextSize", textSize); float-->textSize 是一个根据运行代码的设备缩放文本大小的数字。

【讨论】:

感谢您的帮助,但我需要能够编辑颜色、大小和字体。一定有办法通过远程视图调用这些 textView 方法,但我不确定如何。 因此,要调用方法,您只需从 RemoteViews 调用 setFloat、setInt 等方法之一,... 第一个参数是您要更改的 RemoteView 中的对象 ID,第二个参数只是您要调用的 TextView 方法的 String 名称,第三个参数是您提供给 String 方法的参数。所以我在上面的答案中写的等于widgetTextViewLineOne.setTextSize(textSize)...所以你需要做的就是从TextView类中找到你需要的方法,然后这样调用 这适用于除设置字体之外的所有内容。我似乎找不到支持这一点的方法。有吗? 我发现设置小部件的字体并不那么简单。谢谢您的帮助。更多信息在这里:***.com/questions/4318572/…

以上是关于编辑小部件的文本,不受 RemotView 的限制的主要内容,如果未能解决你的问题,请参考以下文章

如何限制 TextSpan 小部件的文本长度

使用不受限制的密钥PLACES_API_ACCESS_NOT_CONFIGURED

如何制作 Qt 交互式文本编辑小部件

如何为文本小部件设置字符的最大宽度?

PyQt4 中理想的小部件是啥,我们可以在其中附加文本但在填充文本后无法编辑它?

编辑文本控制器更新小部件值而不调用 setState() - Flutter