首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在设备旋转时以编程方式更新小部件宽度-高度

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

Stack Overflow用户
提问于 2014-12-28 14:08:06
回答 1查看 2.3K关注 0票数 5

我在小部件上工作,当设备从纵向旋转到景观,从风景到画像时,我需要通过编程控制小部件的宽度和高度。为此,当配置更改时,我调用以下代码以编程方式更新小部件宽度:

代码语言:javascript
复制
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岁。

我找了很多,但没有找到与这个问题有关的问题,感谢提前给你宝贵的时间。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-01 15:23:44

好的,这里有一个我认为会奏效的解决办法:

创建两个不同的布局(widgetHorizon,widgetVertical)。

在配置更改的时间(我假设您正在正确地捕捉它)

您发送的更新意图如下:

代码语言:javascript
复制
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);
    }

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

代码语言:javascript
复制
RemoteViews views = new RemoteViews(getPackageName(),R.Layout.widgetHorizon)

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27677162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档