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