我正在写一个Android AppWidget。窗口小部件的布局包含一个LinearLayout,其中包含许多ImageView。在AppWidgetProvider OnUpdate方法中,我首先为布局创建一个RemoteViews ......
var rv = new RemoteViews(context.PackageName, Resource.Layout.WidgetLayout);
...并且,使用它,我可以为每个子ImageView设置位图。
然而,我真正想做的是在布局完成后获得ImageView的实际大小,以便我可以将精确大小的图像(可能通过位图)绘制到它们中。我认为无法通过RemoteViews获取ImageView大小,也无法获得RemoteViews项目的底层ImageView。
我甚至可以这样做吗?它是在OnUpdate()中完成的吗?如果是这样,怎么样?如果没有,我应该在哪里做?
提前致谢。
答案 0 :(得分:2)
我甚至可以这样做吗?
没有。由RemoteViews
定义的UI的呈现由单独的应用程序(主屏幕)在单独的过程中处理。您无法从其他进程获取Java对象,特别是Views
。
答案 1 :(得分:0)
您可以获得小部件的大小-小部件的近似大小。 在布局中,您可以使用“权重”-如果您知道窗口小部件的大小和图像的权重,则可以近似计算图像的大小。 我正在使用这种方法来制作适当的位图。 问题之一-不同的设备位于不同的位置。 我的位图之一具有下一个权重-宽度为0.6,高度为0.15。
SetTitleButton( context, views, (int) (w*0.6), (int)(h*0.15*coefficient));
其中系数试图补偿不同的“谎言”,用户可以对其进行修改以适合...
w和h-是小部件的大小。
Bundle awo = appWidgetManager.getAppWidgetOptions( appWidgetId);
int h=awo.getInt("appWidgetMaxHeight");
int w=awo.getInt("appWidgetMaxWidth");