Android小部件的FlowLayout

Android小部件的FlowLayout,android,android-appwidget,flowlayout,Android,Android Appwidget,Flowlayout,Romain Guy为Android活动中的FlowLayout创建了一个很棒的演示和示例实现(他在回答这个问题时链接到:) 我很想在应用程序小部件中使用类似的东西,但它们似乎被文档中提到的布局类所限制: 我试图扩展LinearLayout,但似乎不允许使用上述布局的后代。也许我可以使用RelativeLayout以编程方式重新排列文本视图 有没有更聪明的方法来实现这一点 为什么小部件布局如此严格?我错过了什么重要的事情吗 我试图扩展LinearLayout,但似乎不允许使用上述布局的后代 对

Romain Guy为Android活动中的FlowLayout创建了一个很棒的演示和示例实现(他在回答这个问题时链接到:)

我很想在应用程序小部件中使用类似的东西,但它们似乎被文档中提到的布局类所限制:

我试图扩展LinearLayout,但似乎不允许使用上述布局的后代。也许我可以使用RelativeLayout以编程方式重新排列文本视图

有没有更聪明的方法来实现这一点

为什么小部件布局如此严格?我错过了什么重要的事情吗

我试图扩展LinearLayout,但似乎不允许使用上述布局的后代

也许我可以使用RelativeLayout以编程方式重新排列文本视图

我不知道怎么做,因为你不是呈现UI的那个人

有没有更聪明的方法来实现这一点

“这”是什么还不清楚。如果“这”是“应用程序小部件的
FlowLayout
类型UI”,则可以编写您自己的主屏幕(这样您就可以拥有您想要的UI,而不需要应用程序小部件),或者重新设计UI。正如您所注意到的,应用程序小部件的可用小部件和容器的调色板有限

从战略上讲,您可以为AOSP和home提供一个
FlowLayout
,使其在未来的Android版本中可用,并进一步希望它能够被应用程序小部件使用

为什么小部件布局如此严格?我错过了什么重要的事情吗

应用程序小部件由主屏幕呈现。有数千个主屏幕实现。他们在自己的流程中运行,使用自己的代码,由自己的开发人员编写


因此,您实际上并不是在应用程序中创建由主屏幕显示的小部件。相反,您正在创建一个数据结构,描述希望主屏幕代表您创建的小部件。因此,
remoteview
不支持应用程序定义的子类,这仅仅是因为您的应用程序的类不在主屏幕的进程中。

与往常一样,回答得很好,非常感谢!这实际上是我遇到的RemoteView的最佳描述。谢谢。主屏幕对我来说并不实用,因为我想要一个可以在用户可能正在使用的任何主屏幕上工作的小部件。我可以将xml中的TextView对象作为RemoteView添加到我的小部件布局中。这可能是相对的。我还没有弄清楚的是,在添加这样一个视图时,如何在下面指定android:layout_toRightOf和layout_参数。也许我会在xml中有一个文本视图的静态网格,并决定在运行时将文本放入其中。@Richardiegenmann:“我还没有弄清楚的是,在添加这样的视图时,如何在下面指定android:layout_toRightOf和layout_参数”——问题是,对于流来说,正确的答案是,将取决于文本大小和宽度。你可以很好地控制文本大小,但你对宽度的控制更少,甚至不需要知道宽度。通过计算我添加到文本视图中的字符数,我可以大致知道什么时候应该进行与CR/LF相当的RelativeLayout。另一个想法可能是渲染位图。这将允许访问所有文本绘图信息。@Richardiegenmann:使用位图方法时要小心,因为在IPC调用(如通过
RemoteView
发送)上有1MB事务限制。