获取 RemoteViews 中 ImageView 的尺寸

4

我正在编写一个Android AppWidget。小部件的布局包含一个LinearLayout,在其中有许多ImageView。在AppWidgetProvider OnUpdate方法中,我首先为布局创建一个RemoteViews...

var rv = new RemoteViews(context.PackageName, Resource.Layout.WidgetLayout);

...使用它,我可以为每个子ImageView设置位图。

然而,我真正想做的是在布局完成后获取ImageView的实际大小,以便我可以将精确大小的图像(可能通过位图)绘制到其中。我无法通过RemoteViews获取ImageView的大小,也无法访问RemoteViews项的基础ImageView。

我能做到这一点吗?它是在OnUpdate()中完成的吗?如果是,如何完成?如果不是,在哪里应该完成?

提前感谢。

2个回答

5

我能做到这个吗?

不可以。通过RemoteViews定义的UI渲染由另一个应用程序(主屏幕)在单独的进程中处理。你无法从其他进程获取Java对象,尤其是Views


啊!现在我明白了。谢谢你的信息,CW。 - Boulder Keith

2

您可以获取部件的大小 - 近似大小。 在布局中,您可以使用"权重" - 如果您知道部件的大小和图像的权重,则可以近似计算图像的大小。 我正在使用这种方法来制作适当的位图。 其中一个问题是不同的设备放置位置不同。 我的一张位图具有以下权重 - 宽度的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");

3
为了避免硬编码字符串,我建议使用AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHTAppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH代替。 - Samuel T. Chou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接