gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:20:31 24 4
gpt4 key购买 nike

我刚刚完成了我的 Android 小部件。现在我需要有不同尺寸的这个小部件供用户选择。

例如,我需要一个中、小和大尺寸的小部件,所以当用户安装应用并按住主屏幕然后选择小部件时,我希望他在小部件菜单中看到三个具有相同应用名称的小部件,但与大小。像这样的:

你好小你好中你好大号

我已经准备好了中号,但是如何在同一个应用程序中添加小号和大号?知道所有三种尺寸都包含完全相同的数据和操作,只是尺寸和背景不同。

最佳答案

您需要为 list 文件中的每种类型定义一个接收器,例如:

    <receiver android:name=".MyWidget" android:label="@string/medium_widget_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/medium_widget_provider" />
</receiver>

<receiver android:name=".MyWidget" android:label="@string/large_widget_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/large_widget_provider" />
</receiver>

这将允许您拥有相同的 AppWidgetProvider类可用于多个小部件,在 <appwidget-provider> 中定义了不同的小部件名称和不同的大小。 XML。

现在,如果您的小部件需要比 <appwidget-provider> 中的更多差异XML 我将创建一个基本的小部件类来实现不同类型之间的所有常见行为:

public abstract class MyBaseWidget extends AppWidgetProvider

然后您的每个具体实现都可以扩展 MyBaseWidget。然后在您的 list 文件中,您将为每个具体实现都有一个接收器定义,例如:

    <receiver android:name=".MyMediumWidget" android:label="@string/medium_widget_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/medium_widget_provider" />
</receiver>

<receiver android:name=".MyLargeWidget" android:label="@string/large_widget_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/large_widget_provider" />
</receiver>

关于android - 如何在同一个应用程序中添加多个小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com