Android 设置RemoteView中TextView的旋转(应用程序小部件)

Android 设置RemoteView中TextView的旋转(应用程序小部件),android,rotation,textview,android-appwidget,remoteview,Android,Rotation,Textview,Android Appwidget,Remoteview,我有一个小部件,它的xml布局很简单:一个ImageView和一个TextView 我可以使用android:rotation在xml中硬编码TextView的旋转 但是,我希望能够以编程方式设置TextView的旋转。似乎视图有一个setRotation()方法,因此TextView将继承此方法,这样“普通的”TextView就可以通过编程使用此方法进行旋转 但是当TextView被嵌入到remoteview中时,您必须间接调用这些方法,如setTextViewText()和setTextVi

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

我可以使用
android:rotation
在xml中硬编码
TextView
的旋转

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

但是当
TextView
被嵌入到
remoteview
中时,您必须间接调用这些方法,如
setTextViewText()
setTextViewTextSize()

而且您似乎还可以调用常规的
setFloat(int-viewId,String-methodName,float-value)
来设置任何
methodName
的值,因此您也可以通过将
的“setTextSize”
传递到
setFloat()
来设置文本大小

好的,回答这个问题

由于
remoteview
中没有
setTextViewRotation()
方法,我想我需要使用
setFloat(viewId,“setRotation”,value)
间接调用它

但当我尝试这样做时,我的小部件只显示一个“加载小部件时出现问题”消息框

它使用例如
setFloat(viewId,“setTextSize”,value)
来更改文本大小,因此我的思路是正确的,但它不适用于代码中相同位置的
setRotation

我猜这是因为
setRotation
是一种继承的方法(来自
View
),而不是
TextView
本身的方法,但它让我对如何旋转
TextView
有些困惑

有什么想法吗


谢谢

崩溃的原因是
setRotation()
中没有
@RemotableViewMethod
注释,因此无法使用
setFloat()
进行设置


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

ooh这太可惜了。我可以在一个布局中有N个文本视图,具有N个不同的旋转,并且只设置一个我希望可见的文本视图的可见性吗?即使这是可能的,多个版本的布局文件是否更优雅(我甚至不知道如何实现)?@drmrbrewer:“我可以在一个布局中有N个文本视图,具有N个不同的旋转,并且只设置一个我希望可见的文本视图的可见性吗?”--您可以尝试一下,尽管您必须记住N
TextViews
中的哪一个是您正在使用的,因此您可以在其上设置文本(现在和更新中)。“布局文件的多个版本是否更优雅”--嗯,这两个版本都是令人讨厌的黑客攻击“我甚至不知道该怎么做”--创建不同程度的
layout0.xml
layout90.xml
,等等,并在
remoteview
构造函数中使用正确的
R.layout
值。@drmrbrewer:“布局文件的多个版本更优雅吗”--忽略优雅,如果您的目标只是几个不同的旋转值,那么N
TextViews
的方法更简单。但是,如果您想要360次不同的旋转,那么在应用程序小部件中使用360次
TextView
小部件对主屏幕实现来说是不友好的,因为它的过程就是您正在使用其堆的过程。谢谢您的进一步评论。经过深思熟虑,在我看来,您对多个布局的建议可能是最整洁的(或者是最令人讨厌的黑客攻击:-),因为我可以在构建RemoteView时选择适当的布局,然后代码的其余部分(包括引用TextView id)完全没有改变。也许如果我的布局很复杂,TextView只是一个小组件,那么一个布局和多个TextView会更整洁。不管怎样,现在它可以工作了,所以谢谢:)