【问题标题】:Edit text of widget without being limited by a RemotView编辑小部件的文本,不受 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);

【问题讨论】:

    标签: android android-widget remoteview


    【解决方案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类中找到你需要的方法,然后这样调用
    • 这适用于除设置字体之外的所有内容。我似乎找不到支持这一点的方法。有吗?
    • 我发现设置小部件的字体并不那么简单。谢谢您的帮助。更多信息在这里:stackoverflow.com/questions/4318572/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多