German Label-hintergrund-Breite ändert sich selbständig

strupp01

Active Member
Licensed User
Longtime User
Ich habe mehrere Label in einer Activity aufgelistet. Die ersten 3 Label sind breiter als die folgenden Label und mit Hintergrundfarbe(erzeugt über GradientDrawable) belegt.
Nach dem Start wird die Labelbreite richtig angezeigt. 1 bis 2 Sekunden später passt sich der Labelhintergrund der ersten 3 Label auf die Breite der restlichen Label an.
Ich habe schon viel probiert und getestet, aber keine Lösung gefunden.

Wer kann mir helfen und meinen Fehler aufzeigen.
Programm habe ich beigelegt.

Danke und Grüße
strupp01
 

Attachments

  • Labelweite.zip
    8.1 KB · Views: 188

klaus

Expert
Licensed User
Longtime User
Tja, das Programm läuft wie Du es programmiert hast !
Du musst für jedes Label ein neues GradientDrawable definieren. Auch wenn sie genau die gleichen sind !
Da Du allen Labels das gleiche GradientDrawable zuweist sind sie eben Alle gleich. Das heisst wenn im letzten Label die Breite kürzer ist werden alle anderen auch gekürtzt.
Dieser Code muss für jedes Label neu erzeugt werden !
B4X:
Dim gradient_Panel As GradientDrawable
Dim Clrs(2) As Int
Clrs(0) = Farbe_Eingabehintergrund_Darstellung
Clrs(1) = Farbe_Eingabehintergrund_Darstellung
gradient_Panel.Initialize("TOP_BOTTOM", Clrs)    'Der Farbverlauf von Oben(Top) nach Unten(Bottom) mit Farbe_Strom
gradient_Panel.CornerRadius = 5dip  'Radiengröße ist 5dip
Beide Farben sind gleich, warum benutzt Du nicht ein ColorDrawable, das macht das Gleiche aber ein bisschen einfacher ?
Du könntest diese Erstellung in einer Sub machen (nicht getestet).
B4X:
Sub SetColorDrawable(col As Int, Radius As Float) As ColorDrawable
    Dim cdw as ColorDrawable
    cdw.Initialize(col, Radius)
    Return cdw
End Sub
und
B4X:
LabelX.Background = SetColorDrawable(Farbe_Eingabehintergrund_Darstellung, 5dip)
Beste Grüsse.
 

strupp01

Active Member
Licensed User
Longtime User
Hallo Klaus,
wiedereinmal recht herzlichen Dank für Deine Hilfe. Hat mir wieder sehr geholfen. Werde dies so umprogrammieren.:sign0060:

Gruß strupp01
 
Top