我的应用中有以下小部件,其中包含宽度和高度设置为ImageView
的{{1}}。根视图再次为WRAP_CONTENT
,宽度和高度设置为RelativeLayout
。
我的问题是为什么在小部件的顶部和底部有一些填充(标记为黑色)?我希望它完全是正方形的。以下是我的小部件布局。
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
这是我的第一个小部件应用程序:)我有点迷茫,无法弄清楚为什么这个额外的填充在那里。有人有想法吗?
感谢您的帮助。
答案 0 :(得分:1)
来自App Widget Design Guidelines | Android Developers
添加小部件后,它将被拉伸以占据水平和垂直的最小单元格数,以满足其minWidth和minHeight约束。
每个设备的主屏幕上都有一个网格,可以强制对齐小部件。在纵向和横向之间旋转时,您甚至可以在某些设备上看到网格单元的纵横比发生变化。
上面链接中的文档对如何指定小部件的大小有一些建议。那里的一些信息可能对你有帮助。
我建议如果您只展示ImageView
,而不是使用RelativeLayout
,请使用重力为FrameLayout
的{{1}}和透明背景。这样center
可能会被拉伸,但FrameLayout
应该保持正方形。
更好的是,您可能根本不需要ImageView
子类。只需将ViewGroup
作为顶级组件,并使用缩放类型ImageView
。然后你的位图应该在FIT_CENTER
内。 (哦,不要为ImageView
指定背景颜色,只需在位图中进行背景颜色。)