【问题标题】:Get Size of ImageView in RemoteViews在 RemoteViews 中获取 ImageView 的大小
【发布时间】:2017-06-17 15:02:02
【问题描述】:

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

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

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

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

我什至可以这样做吗?它是在 OnUpdate() 中完成的吗?如果是这样,怎么做?如果没有,我应该在哪里做?

提前致谢。

【问题讨论】:

    标签: android bitmap imageview remoteview


    【解决方案1】:

    我什至可以这样做吗?

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

    【讨论】:

    • 啊!现在我懂了。感谢CW提供的信息。
    【解决方案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");
    

    【讨论】:

    • 为了避免硬编码字符串,我建议改用AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHTAppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH
    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多