多个小部件大小

时间:2012-01-24 02:36:01

标签: android android-layout android-widget android-appwidget

我在网上搜索但没有任何帮助。我想制作第二个小部件,只是更大。我使用服务来更新我的小部件所以我需要创建2个服务(通过远程视图等更新小部件中的数据)或者我可以更容易吗?

当我添加媒体窗口小部件时,它会显示一个小窗口,但需要更多空间(144dp x 72dp)并且没有更新。也许我应该复制整个应用程序类并对其进行修改,但我认为这是一个愚蠢的解决方案。

我正在尝试这个解决方案

how to add multiple widgets in one app?

How to put multiple widget sizes in one apk?

任何提示? :)

1 个答案:

答案 0 :(得分:9)

我对我的小部件有同样的需求。确切地说,您发布的这两个链接帮助我找到了解决方案,最后进行了一些研究。

为了获得小部件的第二个尺寸:

  1. 使用不同的名称在清单中定义另一个接收者。这很重要:如果您不使用其他名称,则只有一个名称会显示在可用小组件列表中。例如:android:name=".MyWidget_Small"android:name=".MyWidget_Medium"。同时修改标签

  2. 附加接收器需要res / xml中的新appwidget提供程序。在android:meta-data标签的资源中键入另一个XML文件的名称。然后,您将拥有android:resource="@xml/MyWidgetProvider_Small"android:resource="@xml/MyWidgetProvider_Medium"

  3. res / xml中的每个XML文件都必须指向单独的布局。您将拥有android:initialLayout="@layout/MyWidget_Small"android:initialLayout="@layout/MyWidget_Medium"

  4. 现在是Java部分。每个appwidget提供程序都需要其对应的Java类来扩展AppWidgetProvider,因此您将需要另外两个类。如果你的原始类是MyWidget.java,你将添加MyWidgetSmall.java和MyWidgetMedium.java。您可能最终会对原始Java类进行子类化,如果窗口小部件在每个大小中具有不同的行为,则可能会修改每个新类。请记住在接收者的android:name

  5. 中按照步骤1中的名称命名这两个类
  6. 您的服务不需要重复。但是,您应检查源代码以查找对MyWidget.class的显式引用。如果您这样做,则必须引用实际的子类

  7. 希望这有帮助

相关问题