Android小部件WRAP_CONTENT无效

时间:2016-07-27 00:04:00

标签: android android-layout imageview android-widget android-bitmap

我的应用中有以下小部件,其中包含宽度和高度设置为ImageView的{​​{1}}。根视图再次为WRAP_CONTENT,宽度和高度设置为RelativeLayout

eql

我的问题是为什么在小部件的顶部和底部有一些填充(标记为黑色)?我希望它完全是正方形的。以下是我的小部件布局。

WRAP_CONTENT

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget_battery_2x2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#000000" android:layout_margin="@dimen/widget_margin" android:padding="@dimen/widget_padding" > <ImageView android:id="@+id/image_widget_arc_battery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ff0000" android:layout_alignParentLeft="true"/> </RelativeLayout> @dimen/widget_margin为零。

@dimen/widget_padding包含动态生成的位图(宽度和高度为400)。

ImageView

这是我的第一个小部件应用程序:)我有点迷茫,无法弄清楚为什么这个额外的填充在那里。有人有想法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

来自App Widget Design Guidelines | Android Developers

  

添加小部件后,它将被拉伸以占据水平和垂直的最小单元格数,以满足其minWidth和minHeight约束。

每个设备的主屏幕上都有一个网格,可以强制对齐小部件。在纵向和横向之间旋转时,您甚至可以在某些设备上看到网格单元的纵横比发生变化。

上面链接中的文档对如何指定小部件的大小有一些建议。那里的一些信息可能对你有帮助。

我建议如果您只展示ImageView,而不是使用RelativeLayout,请使用重力为FrameLayout的{​​{1}}和透明背景。这样center可能会被拉伸,但FrameLayout应该保持正方形。

更好的是,您可能根本不需要ImageView子类。只需将ViewGroup作为顶级组件,并使用缩放类型ImageView。然后你的位图应该在FIT_CENTER内。 (哦,不要为ImageView指定背景颜色,只需在位图中进行背景颜色。)