0

我的應用程序中有以下小部件,它包含一個寬度和高度設置爲WRAP_CONTENTImageView。根視圖爲RelativeLayout,寬度和高度的設置爲WRAP_CONTENTAndroid小部件WRAP_CONTENT不工作[已修正]

enter image description here

我的問題是,爲什麼有widget的頂部一些填充(標記爲黑色)和底部?我希望它是完全正方形的。以下是我的小部件佈局。

<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); 

這是我的第一個窗口小部件的應用程序:)我有點丟失,無法找出爲什麼這個微胖是存在的。任何人有想法?

感謝您的幫助。

回答

1

App Widget Design Guidelines | Android Developers

當添加小部件,它將被拉伸以佔據細胞的最小數量,水平和垂直方向,以滿足其minWidth和約束了minHeight需要。

每個設備在其主屏幕上都有一個網格,小部件與之強制對齊。您甚至可以在某些設備上看到在縱向和橫向之間旋轉時網格單元的縱橫比發生變化。

上述鏈接中的文檔對如何爲您的小部件指定大小提供了一些建議。那裏的一些信息可能會幫助你。

我會建議,如果你只顯示ImageView,而是採用了RelativeLayout,使用FrameLayoutcenter重力和透明背景。這樣FrameLayout可能會拉長,但你的ImageView應該保持正方形。

更好的是,根本不需要ViewGroup子類。只需將ImageView作爲頂級組件,並使用比例類型FIT_CENTER。然後你的位圖應該在ImageView內部平方。 (哦,並沒有指定背景顏色的ImageView,只需做位圖的背景顏色。)

+0

嗨克里斯,感謝您的回答。我用戶bitmap.eraseColor(Color.argb(75,0,0,0));它完成了這項工作。但是有一個widget有多個imageview。在這種情況下,我需要有一個根佈局來包裝它們。我會試着用FramaLayout來看看它是如何發展的。 –