【问题标题】:Android widget WRAP_CONTENT not workingAndroid小部件WRAP_CONTENT不起作用
【发布时间】:2016-07-27 00:03:59
【问题描述】:

我的应用程序中有以下小部件,它包含一个ImageView,宽度和高度设置为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 为零。

ImageView包含动态生成的位图(宽高为400)。

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

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

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    来自App Widget Design Guidelines | Android Developers

    当您的小部件被添加时,它将被拉伸以在水平和垂直方向上占据最小数量的单元格,以满足其 minWidth 和 minHeight 约束。

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

    以上链接中的文档对如何为小部件指定尺寸提供了一些建议。那里的一些信息可能会对您有所帮助。

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

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

    【讨论】:

    • 嗨,克里斯,感谢您的回答。我使用 bitmap.eraseColor(Color.argb(75,0,0,0));它完成了这项工作。但是,有一个带有多个图像视图的小部件。在那种情况下,我将需要一个根布局来包装它们。我会用 FramaLayout 试试,看看效果如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多