多种小部件尺寸
Posted
技术标签:
【中文标题】多种小部件尺寸【英文标题】:Multiple widget sizes 【发布时间】:2012-02-17 09:05:33 【问题描述】:我在互联网上搜索,但没有任何帮助。我想做第二个小部件,只是更大。我使用服务来更新我的小部件,所以我需要创建 2 个服务(通过远程视图等更新小部件中的数据)或者我可以让它更容易吗?
当我添加中型小部件时,它会显示一个小部件,但它占用更多空间(144dp x 72dp)并且没有更新。也许我应该复制整个应用程序类并对其进行修改,但我认为这是愚蠢的解决方案。
我正在尝试这个解决方案
how to add multiple widgets in one app?
How to put multiple widget sizes in one apk?
有什么提示吗? :)
【问题讨论】:
这是我对您问题的理解。所以您有 2 个问题,它们是:1. 您有 2 个小部件,并且您希望第二个看起来更大 2. 您在小部件中更新数据时遇到问题。这些是你的问题吗? 【参考方案1】:我对小部件也有同样的需求。正是您发布的这两个链接帮助我找到了解决方案,最后通过更多的研究得到了解决方案。
为了让您的小部件有第二个尺寸:
在您的清单中定义另一个接收器,使用不同的名称。这很重要:如果您不使用其他名称,则可用小部件列表中只会显示一个。例如:android:name=".MyWidget_Small"
和 android:name=".MyWidget_Medium"
。也相应地修改标签
附加接收器需要 res/xml 中的新应用小部件提供程序。在元数据标记的 android:resource 中键入另一个 XML 文件的名称。然后您将拥有android:resource="@xml/MyWidgetProvider_Small"
和android:resource="@xml/MyWidgetProvider_Medium"
res/xml 中的每个 XML 文件都必须指向一个单独的布局。您将拥有android:initialLayout="@layout/MyWidget_Small"
和android:initialLayout="@layout/MyWidget_Medium"
现在是 Java 部分。每个 appwidget 提供者都需要其对应的扩展 AppWidgetProvider 的 Java 类,因此您将需要两个额外的类。如果您的原始类是 MyWidget.java,您将添加 MyWidgetSmall.java 和 MyWidgetMedium.java。您最终可能会继承您原来的 Java 类,并且可能会修改每个新类,如果小部件在每种尺寸下都有不同的行为。请记住在接收者的 android:name 中像在步骤 1 中所做的那样命名这两个类
您的服务不需要复制。但是,您应该检查您的源代码以查找对 MyWidget.class 的显式引用。如果你这样做了,你必须引用实际的子类
希望对你有帮助
【讨论】:
关于接收器的不同名称的评论非常好。我花了一个小时才意识到这一点,并找到了您的解决方案作为证明。 好..+1 . 是否可以在小部件单击时在同一个小部件上显示新布局...就像平滑日历一样.. @RanjitPati 有可能,考虑到每次更改其“结构”时都必须重建整个布局。除非您谈论的是像三星启动器或 Go Launcher 中的伪应用程序小部件之一以上是关于多种小部件尺寸的主要内容,如果未能解决你的问题,请参考以下文章