我在网上搜索但没有任何帮助。我想制作第二个小部件,只是更大。我使用服务来更新我的小部件所以我需要创建2个服务(通过远程视图等更新小部件中的数据)或者我可以更容易吗?
当我添加媒体窗口小部件时,它会显示一个小窗口,但需要更多空间(144dp x 72dp)并且没有更新。也许我应该复制整个应用程序类并对其进行修改,但我认为这是一个愚蠢的解决方案。
我正在尝试这个解决方案
how to add multiple widgets in one app?
How to put multiple widget sizes in one apk?
任何提示? :)
答案 0 :(得分:9)
我对我的小部件有同样的需求。确切地说,您发布的这两个链接帮助我找到了解决方案,最后进行了一些研究。
为了获得小部件的第二个尺寸:
使用不同的名称在清单中定义另一个接收者。这很重要:如果您不使用其他名称,则只有一个名称会显示在可用小组件列表中。例如:android:name=".MyWidget_Small"
和android:name=".MyWidget_Medium"
。同时修改标签
附加接收器需要res / xml中的新appwidget提供程序。在android:meta-data标签的资源中键入另一个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提供程序都需要其对应的Java类来扩展AppWidgetProvider,因此您将需要另外两个类。如果你的原始类是MyWidget.java,你将添加MyWidgetSmall.java和MyWidgetMedium.java。您可能最终会对原始Java类进行子类化,如果窗口小部件在每个大小中具有不同的行为,则可能会修改每个新类。请记住在接收者的android:name
您的服务不需要重复。但是,您应检查源代码以查找对MyWidget.class的显式引用。如果您这样做,则必须引用实际的子类
希望这有帮助