我在互联网上搜索但没有任何帮助。我想制作第二个小部件,只是更大。我使用服务来更新我的小部件,所以我需要创建 2 个服务(通过远程 View 等更新小部件中的数据)或者我可以让它更容易吗?
当我添加中号小部件时,它显示为较小的小部件,但它占用更多空间 (144dp x 72dp) 并且没有更新。也许我应该复制整个应用类并修改它,但我认为这是愚蠢的解决方案。
我正在尝试这个解决方案
how to add multiple widgets in one app?
How to put multiple widget sizes in one apk?
有什么提示吗? :)
最佳答案
我的小部件也有同样的需求。正是您发布的这两个链接帮助我找到了解决方案,最终通过更多的研究得出了解决方案。
为了让您的小部件具有第二个尺寸:
在您的 list 中定义另一个接收器,使用不同的名称。这很重要:如果您不使用不同的名称,则只有一个会显示在可用小部件列表中。例如:
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 的显式引用。如果这样做,则必须引用实际的子类
希望对你有帮助
关于android - 多种小部件尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981397/