android - 多种小部件尺寸

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

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

当我添加中号小部件时,它显示为较小的小部件,但它占用更多空间 (144dp x 72dp) 并且没有更新。也许我应该复制整个应用类并修改它,但我认为这是愚蠢的解决方案。

我正在尝试这个解决方案

how to add multiple widgets in one app?

How to put multiple widget sizes in one apk?

有什么提示吗? :)

最佳答案

我的小部件也有同样的需求。正是您发布的这两个链接帮助我找到了解决方案,最终通过更多的研究得出了解决方案。

为了让您的小部件具有第二个尺寸:

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

  2. 附加接收器需要 res/xml 中的新应用小部件提供程序。在元数据标签的 android:resource 中键入另一个 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 提供者都需要其相应的扩展 AppWidgetProvider 的 Java 类,因此您将需要两个额外的类。如果您的原始类是 MyWidget.java,您将添加 MyWidgetSmall.java 和 MyWidgetMedium.java。您可能最终会子类化您的原始 Java 类,并且如果小部件在每种尺寸下都有不同的行为,则可能会修改每个新类。请记住在接收者的 android:name 中像在步骤 1 中所做的那样命名这两个类

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

希望对你有帮助

关于android - 多种小部件尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981397/

相关文章:

android - 将 Picasso 添加到 Gradle 时出现运行时错误

android - 将形状添加到 LinearLayout Android

android - 可变宽度 TextView 旁边的固定宽度 TextView

android - 为 ExpandableListView 创建布局

java - 如何以编程方式更改主屏幕小部件的形状颜色

android - 通过谷歌云打印打印

java - Android 应用程序错误 NullPointerException?

Android 进程经常产生 logcat "has died"消息。

android - 三星 Note 布局问题

android - 自定义 View 的状态已保存,但从未恢复