Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 在设备轮换时以编程方式更新小部件宽度 – 高度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在处理widget,当设备从纵向旋转到横向和横向到proTrait时,我需要以编程方式控制窗口小部件的宽度和高度.
为此,当配置更改时,我调用以下代码以编程方式更新小部件宽度:

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().

@H_940_6@minSdkVersion是16.

搜索了很多,但找不到与此问题相关的内容,谢谢你提前花了宝贵的时间.

谢谢

解决方法

好的,这是一个我觉得可行的解决方法

创建2个不同的布局(widgetHorizo​​n,widgetVertical).

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

您发送更新意图如下:

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 – 在设备轮换时以编程方式更新小部件宽度 – 高度全部内容,希望文章能够帮你解决android – 在设备轮换时以编程方式更新小部件宽度 – 高度所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。