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 !
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).
Sub SetColorDrawable(col As Int, Radius As Float) As ColorDrawable
Dim cdw as ColorDrawable
cdw.Initialize(col, Radius)
Return cdw
End Sub
und
LabelX.Background = SetColorDrawable(Farbe_Eingabehintergrund_Darstellung, 5dip)
Beste Grüsse.