gpt4 book ai didi

android - 在设备旋转时以编程方式更新小部件宽度 - 高度

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:16 26 4
gpt4 key购买 nike

我正在研究小部件,当设备从纵向旋转到横向以及从横向旋转到纵向时,我需要以编程方式控制小部件的宽度和高度。为此,当配置更改时,我调用以下代码以编程方式更新小部件宽度:

for (int id : appWidgetIds){
Bundle newOptions = appWidgetManager.getAppWidgetOptions(id);
int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, 0);
newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, minWidth - 100);
appWidgetManager.updateAppWidgetOptions(id, newOptions);
}

在此之后,我收到调用 onAppWidgetOptionsChanged() 的新值,但小部件未调整大小。

但是我也在调用 onUpdate()

minSdkVersion 为 16。

我搜索了很多但没有找到与此问题相关的内容,感谢您宝贵的时间。

谢谢

最佳答案

好的,这是我认为可行的解决方法:

创建 2 个不同的布局(widgetHorizo​​n、widgetVertical)。

关于配置更改的时间(我假设你正确地捕获了它)

您按如下方式发送更新 Intent :

private void sendUpdateBroadcastToWidget() {
Intent intent = new Intent(this,WidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);

// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = {R.xml.quick_actions_widget};
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
}

在更新方法中:检查配置并相应地调用:

RemoteViews views = new RemoteViews(getPackageName(),R.Layout.widgetHorizon)

RemoteViews views = new RemoteViews(getPackageName(),R.Layout.widgetVertical)
appWidgetManager.updateAppWidget(appWidgetId, views);

这样布局将根据当前状态进行选择。

关于android - 在设备旋转时以编程方式更新小部件宽度 - 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677162/

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