在 RemoteViews 中获取 ImageView 的大小

Get Size of ImageView in RemoteViews

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

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

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

但是,我真正想做的是在布局完成后获取 ImageView 的实际大小,以便我可以在其中绘制精确大小的图像(可能通过位图)。我看不到通过 RemoteViews 获取 ImageView 大小的方法,也看不到任何获取 RemoteViews 项目的底层 ImageView 的方法。

我能做到吗?是在OnUpdate()中完成的吗?如果是这样,如何?如果没有,我应该在哪里做?

提前致谢。

Can I even do this?

没有。 RemoteViews 定义的 UI 的呈现由单独的应用程序(主屏幕)在单独的进程中处理。您无法从其他进程获取 Java 个对象,尤其是 Views

您可以获得小部件的大小 - 小部件的近似大小。 在布局中,您可以使用 "weights" - 如果您知道小部件的大小和图像的权重 - 您可以近似计算图像的大小。 我正在使用这种方法来制作适当的位图。 问题之一 - 不同的设备位于不同的地方。 我的一张位图具有下一个权重 - 宽度为 0.6,高度为 0.15。

        SetTitleButton( context,  views, (int) (w*0.6),   (int)(h*0.15*coefficient));

其中系数试图补偿不同 "lie" 并且用户可以修改它以适应...

w 和 h - 是小部件的大小。

Bundle awo = appWidgetManager.getAppWidgetOptions( appWidgetId);
    int h=awo.getInt("appWidgetMaxHeight");
    int w=awo.getInt("appWidgetMaxWidth");