German Systemfarbe eines Button ermitteln?

Petrus

Member
Licensed User
Longtime User
Hallo!
Ich habe mit einem ScrollView eine eigene Liste erstellt und möchte, dass beim Drücken des Listeneintrages die gleiche Farbe/Farbverlauf sichtbar wird, wie bei einem gedrückten Button. Wie kann ich die ermitteln, da diese ja je nach Gerät anders ist?

Wo bekomme ich also die Farbe bzw. die Werte für den Farbverlauf her::sign0085:


Viele Grüße
Petrus
 

rbsoft

Active Member
Licensed User
Longtime User
Sorry, hatte die Frage falsch verstanden und Müll gepostet.

Rolf
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Es ist möglich den original Hintergrund als Object zu speichern und man kann dann einen Button Hintergrund wieder zurück setzten.
B4X:
Sub Globals
    Dim btnTest1, btnTest2 As Button
    Dim obj1 As Object
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("main")
    obj1 = btnTest2.Background
End Sub

Sub btnTest1_Click
    Dim obj As Object
    
    obj = btnTest1.Background
    btnTest2.Background = obj
End Sub

Sub btnTest2_Click
    btnTest2.Background = obj1
End Sub
Beste Grüsse.
 

Petrus

Member
Licensed User
Longtime User
Hallo Klaus,
es funktioniert leider nicht gut (siehe Beispielprojekt). Wenn ich den Button drücke, dann erscheint erst der Hintergrund als ungedrückt und danach als gedrückt. Außerdem flackert es beim Drüberfahren.

Ich habe eine Inhaltsliste mit einem ScrollView erstellt und für die Listenelemente als Hintergrund Buttons verwendet. Wenn ich auf einen Listeneintrag drücke, dann sollte das so wie bei einem ListView bzw. Button aussehen, im ungedrückten Zustand aber flach.

Es wäre kein Problem den Buttons für den gedrückten Zustand einen Farbverlauf zuzuweisen, aber es sollte schon der gleiche sein, wie er auf dem Endgerät bei einem gedrückten Button oder bei einer Liste angezeigt wird - wegen des einheitlichen Erscheinungsbildes. Dazu müsste man aber die Farbwerte wissen.

So habe ichs hinbekommen:



So sollte es sein: (leider nur ein Wunsch-Bild)



Übrigens vielen Dank für Deine ScrollView-Beispiele!!!:wav:

Viele Grüße
Petrus
 

Attachments

  • TestBtnBackround.zip
    6.5 KB · Views: 348

Petrus

Member
Licensed User
Longtime User
Problem gelöst!

Mit der Bibliothek AndroidResources von Martin geht es ganz einfach (siehe Beispielprojekt unten).

Man kann den Hintergrund "list_selector_background" ermitteln und jedem View zuweisen, dass dann beim Draufdrücken den gleichen Background anzeigt, wie ein ListView. Das Aussehen im nichtgedrückten Zustand wird dadurch nicht beeinflusst und kann beliebig eingestellt werden.

Es wäre sehr schön, wenn das jemand mal auf einem realen Gerät ausprobieren würde, bei dem der Hintergrund einer Liste nicht diese Goldfarbe hat - um zu sehen, ob das dann auch im Projekt so angezeigt wird (also mit dem gerätespezifischen Hintergrund).

B4X:
Sub Process_Globals

   'AndroidResource can be delared as a Process_Global - it is not an Activity object
   Dim AndroidResources1 As AndroidResources

End Sub

Sub Activity_Create(FirstTime As Boolean)
   
   Activity.LoadLayout("Layout01")
   
   Dim Obj As Object
   Obj = AndroidResources1.GetAndroidDrawable("list_selector_background")

   Dim sldButton As StateListDrawable
   Dim FarbeEnabled As ColorDrawable
   FarbeEnabled.Initialize(Colors.White, 0)
   
   sldButton.Initialize
   sldButton.AddState(sldButton.State_Pressed, Obj)
   sldButton.AddState(sldButton.State_Enabled, FarbeEnabled)
   Button1.Background = sldButton



Gruß
Petrus
 

Attachments

  • ListBackGround.zip
    7 KB · Views: 328
Cookies are required to use this site. You must accept them to continue using the site. Learn more…