我有一个
Android应用程序小部件,我想扩展它以支持几种尺寸,并且还可以重新调整大小.
问题是我需要知道小部件的大小,所以我可以知道我可以放入多少内容.
如何阅读应用小部件大小?
我找不到任何东西.
解决方法
我知道这是一个老问题,但有一个更新的答案(我认为当时没有,因为它只是API 16及以上):
你可以打电话:
Bundle options = appWidgetManager.getAppWidgetoptions(appWidgetId);
这将给出在接收期间传递给接收器的相同选项
public void onAppWidgetoptionsChanged(Context context,AppWidgetManager appWidgetManager,int appWidgetId,Bundle newOptions)
使用此Bundle选项,您可以使用常量查询大小调整:
AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH
记住三星喜欢与众不同,所以你可能需要一个特殊的TouchWiz处理程序(直接从我的应用程序复制代码):
@Override public void onReceive(Context context,Intent intent) { if (intent == null || intent.getAction() == null) return; // I FUCKING HATE SAMSUNG! if (intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { handletouchWiz(context,intent); } super.onReceive(context,intent); } @TargetApi(16) private void handletouchWiz(Context context,Intent intent) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); int appWidgetId = intent.getIntExtra("widgetId",0); int widgetSpanX = intent.getIntExtra("widgetspanx",0); int widgetSpanY = intent.getIntExtra("widgetspany",0); if (appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) { Bundle newOptions = new Bundle(); // We have to convert these numbers for future use newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT,widgetSpanY * 74); newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH,widgetSpanX * 74); onAppWidgetoptionsChanged(context,appWidgetManager,appWidgetId,newOptions); } }
原文地址:https://www.jb51.cc/android/317032.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。