2012-10-07 5 views
25

ich folgendes TextView haben:Constrain drawableLeft und Höhe des drawableRight auf Textview Höhe

<TextView 
    android:drawableLeft="@drawable/loading" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Updating Rates" /> 

Und das Ergebnis ist folgendes:

Wie ich den Ladekreis ziehbar constrain machen sie proportional so Seine Höhe entspricht der Höhe des Textes?

Auch, wenn möglich, möchte ich einige Abstände zwischen dem Text und dem Bild hinzufügen.

Antwort

22

Um die loading kleiner nur die Bilder kleiner machen zu machen.

Oder verwenden Sie RelativeLayout und legen Sie das Laden in eine ImageView und skalieren Sie es.

Oder Sie können Polsterung zwischen den Drawables hinzufügen und den Text mit android:drawablePadding (oder setCompoundDrawablePadding()):

android:drawablePadding="3dp" 
+0

"Um die Bilder kleiner zu machen" - Hilf mir. Vielen Dank. – offset

+0

@offset Größe der Bilder (Photoshop, GIMP, Online-Tools, ... etc) – JafarKhQ

+1

Das ist, was ich sagte, reduzierte ich das Bild und es löste mein Problem. – offset

0

Sie müssen nur zwei separate Ansichten Imageview und Textview erklären, und setzen sie entsprechend

+1

Ja, aber manchmal drawableRight ist in der TextView für Klick-Listener (wie ein Kalender-Picker-Symbol) benötigt. Daher ist es ein Problem, sie separat einzustellen. –

+0

Setzen Sie sie in ein LinearLayout und setzen Sie den Klick auf das Layout. Problem gelöst! – noob

0

Eine bessere Lösung wird eine XML in ziehbar Ordner zu erstellen und das Bild zu diesem XML hinzufügen und verwalten scaleType als "fitXY". Jetzt können Sie dieses XML als drawableLeft definieren.

+1

Können Sie weitere Details hinzufügen? Vielleicht eine XML-Beispieldatei? –

+1

Ich habe das versucht und es funktioniert nicht. Sie können die Größe eines über XML nicht im Drawable-Ordner festlegen. Der scaleType = "fitXY" bezieht sich auf ImageViews und nicht auf Zeichnungsobjekte. Ich habe die Bilder skaliert und stattdessen in die verschiedenen drawable-mdpi, drawable-xhdpi Ordner eingefügt. – Deemoe

7

Ich glaube, ich fand die Lösung, aber ein bisschen spät

Drawable drawable = getResources().getDrawable(R.drawable.s_vit); 
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5)); 
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight); 
Button btn = findViewbyId(R.id.yourbtnID); 
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
+0

Was ist scaleWidth und scaleHeight in diesem Code? – Sly

1

Ravi Lösung für mich gearbeitet, aber bei einigen Geräten ziehbar verschwindet. Dies wurde behoben, indem die Skalierung entfernt wurde.