0

Ich habe folgendes Widget in meiner App und es enthält eine ImageView mit Breite und Höhe als WRAP_CONTENT eingestellt. Root View ist ein RelativeLayout wieder mit Breite und Höhe als WRAP_CONTENT eingestellt.Android Widget WRAP_CONTENT funktioniert nicht [FIXED]

enter image description here

Mein Problem ist, warum es einige Polsterung (markiert in schwarz) sind oben und unten des Widgets? Ich möchte, dass es perfekt quadratisch ist. Folgendes ist mein Widget-Layout.

<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 und @dimen/widget_padding ist gleich Null.

ImageView enthält eine dynamisch generierte Bitmap (Breite und Höhe 400).

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

Dies ist mein erstes Widget App :) Ich bin irgendwie verloren und kann nicht herausfinden, warum das Pfund extra gibt. Hat jemand eine Idee?

Danke für Ihre Hilfe.

Antwort

1

Von App Widget Design Guidelines | Android Developers

Wenn Ihr Widget hinzugefügt wird, wird es die minimale Anzahl von Zellen zu besetzen gestreckt werden, horizontal und vertikal, benötigt seine minWidth und minHeight Einschränkungen gerecht zu werden.

Jedes Gerät verfügt über ein Raster auf seinem Startbildschirm, mit dem die Widgets gewichtet werden. Sie können sogar auf einigen Geräten sehen, dass sich das Seitenverhältnis der Gitterzellen ändert, wenn zwischen Hoch- und Querformat gedreht wird.

Die Dokumentation unter dem obigen Link enthält einige Hinweise zum Festlegen von Größen für Ihre Widgets. Einige der Informationen dort könnten Ihnen helfen.

Ich würde empfehlen, dass, wenn Sie nur die ImageView zeigen, stattdessen ein RelativeLayout die Verwendung ein FrameLayout mit einem Gewicht von center und transparentem Hintergrund. Auf diese Weise kann die FrameLayout gestreckt werden, aber Ihre ImageView sollte quadratisch bleiben.

Noch besser, Sie brauchen möglicherweise keine ViewGroup Unterklasse. Haben Sie einfach die ImageView als Ihre Top-Level-Komponente und verwenden Sie einen Skalentyp FIT_CENTER. Dann sollte Ihre Bitmap innerhalb der ImageView Platz nehmen. (Oh, und geben Sie keine Hintergrundfarbe für die ImageView, nur die Hintergrundfarbe in der Bitmap.)

+0

Hallo Kris, Vielen Dank für Ihre Antwort. I Benutzer bitmap.eraseColor (Color.argb (75,0,0,0)); und es macht den Job. Es gibt jedoch ein Widget mit mehr als einer Bildansicht. In diesem Fall muss ich ein Root-Layout haben, um alle einzubinden. Ich werde es mit FramaLayout versuchen und sehen, wie es geht. –

Verwandte Themen