多个小部件大小

Jak*_*ała 3 android android-widget android-layout android-appwidget

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

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

我正在尝试这个解决方案

如何在一个应用程序中添加多个小部件?

如何在一个apk中放置多个小部件大小?

任何提示?:)

Jos*_*_GD 10

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

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

  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中按照步骤1中的名称命名这两个类

  5. 您的服务不需要重复.但是,您应检查源代码以查找对MyWidget.class的显式引用.如果您这样做,则必须引用实际的子类

希望这可以帮助