4

我的主屏幕小部件中有一个ImageView。在布局文件中,我将高度和宽度设置为wrap_content. 但根据用户的输入,我必须将其高度和宽度更改为match_parent. 如何才能做到这一点 ?

RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

现在我尝试setInt()在这个RemoteViews对象上使用这样的方法来检查是否可以更改高度和宽度:

rv.setInt(R.id.widgetImageView, "setMinimumHeight", 300);

但这是我在 logcat 上得到的:

couldn't find any view, using error view
android.widget.ImageView can't use method with RemoteViews: setMinimumHeight(int)

那么如何将其高度和宽度更改为match_parent

4

2 回答 2

0

对于那些想知道如何做到这一点的人,我ImageView在布局中使用了两个。一个高度和宽度设置为wrap_content,另一个高度和宽度设置为match_parent。根据用户的输入,我调用setVisibility来隐藏ImageView不需要的RemoteView

rv.setInt(R.id.widgetImageView1, "setVisibility", View.GONE);

ImageView我们可以调用的方法很少RemoteView

于 2013-01-12T09:30:56.400 回答
-1

采用:

    ImageView view = new ImageView();
    view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

的第一个参数LayoutParams是宽度,第二个参数是高度。

在这里,我创建了一个新的 ImageView 进行解释。您应该使用您自己的代码中的 ImageView 变量来执行上述操作。我希望这很清楚。

[更新代码]:对不起,MATCH_PARENT变量在LayoutParamsnot under 下View。我已经更新了代码。

[更新]:上面的答案不适用于RemoteViews不能RemoteViews有布局参数。根据此SO Question中给出的答案,无法通过常规方法设置或查找 RemoteViews 的尺寸。

我找到了这个Android Widget Tutorial,在 Widget Size 部分,作者说:

    A Widget will take a certain amount of cells on the homescreen. A cell is
    usually used to display the icon of one application. As a calculation rule 
    you should define the size of the widget with the formula: 

    ((Number of columns / rows)* 74) - 2. 

    These are device independent pixels and the -2 is used to avoid rounding issues.

    As of Android 3.1 a Widgets can be flexible in size, e.g. the user can make it
    larger or smaller. To enable this for Widgets you can use the 
    android:resizeMode="horizontal|vertical" attribute in the XML configuration file
    for the widget.

由此,我可以建议您,与其直接设置特定的整数大小值,不如设置要调整大小的行数和列数?例如,如果您的初始小部件大小为4 Columns and 1 Row,则在用户输入时,您可以将其更改为4 Columns and 4 Rows,从而使其占据整个屏幕(小部件的最大大小为 4 行和 4 列)

我知道上述方法不是您想要的,但这对我来说似乎是唯一的方法。试试看是否有帮助。

于 2013-01-08T19:07:50.640 回答