在锁定屏幕上放置此小部件之前,是否有任何方法可以了解自动调整窗口小部件大小(以像素为单位) 例如,当我们在锁定屏幕上放置一个小部件时,然后开始配置活动以及此活动如何获得小部件的大小?
答案 0 :(得分:0)
AFAICT,在用户将小部件放置在(锁定或主屏幕)屏幕上之前,应用无法确定小部件的大小。即使这样,操作系统返回的尺寸为范围 [为什么?],当然用户可以调整窗口小部件的大小。
E.g。将此调试代码添加到AppWidgetProvider的onUpdate()
方法:
Bundle newOptions = appWidgetManager.getAppWidgetOptions(appWidgetIds[0]);
int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int minHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
Log.i("getAppWidgetOptions", String.format(
"getAppWidgetOptions %d x %d .. %d x %d",
minWidth, minHeight, maxWidth, maxHeight));
在Nexus 4模拟器上运行,新放置的主屏幕小部件以dp为单位报告:240 x 58 .. 302 x 84
。这与<appwidget-provider>
XML设置:
android:minWidth="180dp"
android:minHeight="40dp"
android:minResizeWidth="180dp"
android:minResizeHeight="40dp"
AppWidgetProvider可以通过覆盖onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)
来检测其小部件何时调整大小。使用与上面类似的代码[但省略getAppWidgetOptions()
调用],它会记录240 x 58 .. 302 x 84
和(在手动拉伸窗口小部件之后)328 x 58 .. 408 x 84
之类的范围。
即使在锁定屏幕上,如果用户向下拖动屏幕小部件,小部件也可以从锁定键盘获取屏幕空间,但我不确定是否会更改这些最小/最大尺寸值。