Italian [B4A] Come cambiare correttamente colore ad un command button?

amorosik

Expert
Licensed User
App per Android che dispone di tre B4XPage
Ognuna al suo interno contiene due command button
Quando piazzi i command button dal designer, per chi non l'abbia mai fatto, vengono disegnati in grigio scuro, mentre il fondo della page e' chiaro credo bianco
Provo il programma, passo da una schermata all'altra, premo i bottoni e rispondono correttamente, facendo vedere la pressione del button quando ci premi sopra
Fin qua tutto bene

Domanda1: come mai se vado a cambiare (da codice) il colore del command button, il colore cambia correttamente, ma sparisce l'effetto 'bottone premuto' che da la sensazione all'utente di averlo premuto realmente?

Domanda2: come mai se da designer imposto i bordi arrotondati, e vedo il command button correttamente 'stondato', col tasto ovale in grigio scuro e lo sfondo tasto (il rettangolo) trasparente, quando vado a cambiare colore al command button (usando Cmd1.color=Colors.red) mi diventa rosso tutto, compreso lo sfondo rettangolare?
 

LucaMs

Expert
Licensed User
Longtime User
Intanto lo sfondo bianco della pagina è tale solo se è il tema di default del dispositivo o se lo imposti tu (cerca sul sito: theme manifest).

Quello che hai chiesto succede perché la base dei Button è di tipo BitmapDrawable. Se vuoi dare una forma (e colore) personalizzata ai Button devi creare 3 file immagine png, una per ogni stato del tasto: normale, premuto, disattivato (te l'ho scritto anche in un altro thread, anche se in maniera diversa) ed inserirle tramite Designer qui:

1602587877465.png


Se invece vuoi farlo da codice, dovrai creare un oggetto StatelistDrawable, sempre con i file immagine, ed assegnarlo al tasto (cerca: StatelistDrawable).

Molto più semplice usare una ImageView al posto del Button; tanto chi si accorge / sta a guardare se durante la pressione il tasto cambia colore? Solo in casi particolari, altrimenti col dito sopra non lo vedi proprio.
 
Top