Romain Guy 为 Android Activity 中的 FlowLayout 创建了一个很棒的演示文稿和示例实现(他在回答这个问题时链接到:如何在 Android 中做类似 FlowLayout 的事情?)
我很想在应用程序小部件中使用这样的东西,但它们似乎被严重锁定在文档中提到的布局类中:http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout .
我试图扩展线性布局,但似乎不允许上述布局的后代。也许我可以使用相对布局以编程方式重新排列我的文本视图?
有没有更聪明的方法来实现这一点?
为什么小部件布局如此严格?我错过了什么重要的东西吗?
我试图扩展线性布局,但似乎不允许上述布局的后代。
正确。
也许我可以使用相对布局以编程方式重新排列我的文本视图?
我不明白如何,因为您不是呈现您的 UI 的人。
有没有更聪明的方法来实现这一点?
目前尚不清楚"这"是什么。如果"this"是"应用程序小部件的FlowLayout
类型 UI",请编写自己的主屏幕(以便您可以拥有所需的 UI,而无需应用程序小部件),或者重新设计 UI。如您所注意到的,应用程序微件具有有限的可用微件和容器调色板。
从战略上讲,您可以为AOSP和home贡献一个FlowLayout
,使其在未来版本的Android中可用,并进一步希望它能够被应用程序小部件使用。
为什么小部件布局如此严格?我错过了什么重要的东西吗?
应用程序微件由主屏幕呈现。有数以千计的主屏幕实现。它们在自己的进程中运行,使用自己的代码,由自己的开发人员编写。
因此,您实际上并没有在应用程序中创建主屏幕显示的小部件。相反,您正在创建一个数据结构,描述您希望主屏幕代表您创建的小部件。因此,RemoteViews
不支持应用定义的子类,这仅仅是因为应用的类不在主屏幕的进程中。