RemoteViews(应用程序小部件)中 TextView 的 setRotation

setRotation of TextView in RemoteViews (app widget)

我有一个 xml 布局很简单的小部件:一个 ImageView 和一个 TextView

我可以使用 android:rotation.

在 xml 中对 TextView 的旋转进行硬编码

但是我希望能够以编程方式设置 TextView 的旋转。似乎 View 有一个 setRotation() 方法,因此 TextView 将继承此方法,这样 "normal" TextView 可以通过编程方式使用此方法进行旋转.

但是当 TextView 被埋在 RemoteViews 中时,您必须间接调用这些方法,例如 setTextViewText()setTextViewTextSize()

而且您似乎还可以调用通用 setFloat(int viewId, String methodName, float value) 来设置任何 methodName 的值,因此您也可以通过将 "setTextSize" 传递给 [=26] 来设置文本大小=].

好的问题....

因为 RemoteViews 中没有 setTextViewRotation() 方法,我想我需要使用 setFloat(viewId, "setRotation", value).

间接调用它

但是当我尝试这样做时,我的小部件只显示一个 "Problem Loading Widget" 消息框。

它适用于例如setFloat(viewId, "setTextSize", value) 更改文本大小,所以我在正确的轨道上,但它不适用于 setRotation 在我的代码中的相同位置。

我猜这是因为 setRotation 是一个继承方法(来自 View),而不是 TextView 本身的方法,但它让我有点卡住了如何旋转我的 TextView.

有什么想法吗?

谢谢!

你崩溃的原因是因为setRotation()the Android source code中没有@RemotableViewMethod注释,因此无法使用setFloat()设置。

我不知道有什么方法可以让您在应用程序小部件中动态更改 View 的旋转 属性。一种解决方法是通过布局文件的 N 个版本支持 N 次旋转,每个版本都有一个硬编码的 android:rotation 值。