Padding funktioniert nicht mit bestimmten Hintergrundressourcen

8

Kann mir jemand erklären, warum das passiert?

Ich habe eine ziemlich einfache Klasse, die TextView erweitert. Wenn ich die Hintergrundfarbe auf Color.BLUE einstelle, funktioniert Padding gut. Wenn ich die Hintergrundressource in android.R.drawable.list_selector_background ändere, wird mein Padding nicht länger angewendet. Was zum Teufel?

Hier ist meine UI-Klasse:

%Vor%

Und ich verwende es im Layout wie folgt:

%Vor%

Und das ist das Ergebnis der Änderung des Hintergrunds:

    
raydowe 13.11.2012, 15:06
quelle

2 Antworten

11

Der Aufruf an:

%Vor%

löscht alle zuvor gesetzten Padding-Elemente (damit es mit 9-Patch-Elementen ordnungsgemäß funktioniert).

Versuchen Sie, das Padding in Code nach der obigen Zeile zu setzen, wie folgt:

%Vor%

Denken Sie daran, dass die Werte, die an setPadding gesendet werden, in Pixel NOT dip!

sind     
TofferJ 13.11.2012, 15:14
quelle
2

Sie sollten Ihren Hintergrund, wenn überhaupt möglich, in XML einzeichnen lassen. Wenn Sie es im Code festlegen, verwendet es das Padding aus Ihren zeichnbaren Ressourcen und nicht das, was Sie in XML festgelegt haben. Wenn es also programmgesteuert erforderlich ist, sollten Sie das aktuelle Padding abrufen, es vorübergehend speichern und den Hintergrund festlegen , und setzen Sie dann das Padding zurück, wie @TofferJ vorschlägt.

Der Grund dafür ist, dass die Zeichenblätter selbst bei 9-Patch-Bildern (bei denen die unteren und rechten Pixelränder den Füllgrad definieren) eine Auffüllung haben können.

Ihre Lösung sollte sein, Ihre Hintergrundressource einfach in XML zu setzen:

android:background="@android:drawable/list_selector_background"

obwohl ich glaube, dass es sich um eine private Zeichnungsressource handelt, die Sie zuerst in Ihr Projekt kopieren müssen.

    
kcoppock 13.11.2012 15:20
quelle

Tags und Links