Come ottengo il colore di sfondo di un pulsante. Nell'xml ho impostato il colore di sfondo usando ---- android: background = XXXXX ora nella classe di attività come posso recuperare questo valore che ha?Ottieni il colore di sfondo di un pulsante in Android
risposta
Purtroppo non so come recuperare il colore reale.
E 'facile ottenere questo come un Drawable
Button button = (Button) findViewById(R.id.my_button);
Drawable buttonBackground = button.getBackground();
Se sai che questo è un colore allora si può provare
ColorDrawable buttonColor = (ColorDrawable) button.getBackground();
E se siete su Android 3.0+ si può uscire l'identificativo della risorsa del colore.
int colorId = buttonColor.getColor();
E confrontare questo ai colori assegnati, vale a dire.
if (colorID == R.color.green) {
log("color is green");
}
Per ottenere lo sfondo Drawable
, si utilizza
public Drawable getBackground();
come definito nella base View
di classe.
Non dimenticare che lo Button
può avere uno sfondo che è un'immagine, un colore, una sfumatura. Se si utilizza Android: background = "# ffffff", la classe dello sfondo sarà
android.graphics.drawable.ColorDrawable
Da lì si può semplicemente chiamare
public int getColor()
Si può anche provare qualcosa di simile impostare il valore del colore come il tag come
android:tag="#ff0000"
e accedervi da codice
String colorCode = (String)btn.getTag();
private Bitmap mBitmap;
private Canvas mCanvas;
private Rect mBounds;
public void initIfNeeded() {
if(mBitmap == null) {
mBitmap = Bitmap.createBitmap(1,1, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mBounds = new Rect();
}
}
public int getBackgroundColor(View view) {
// The actual color, not the id.
int color = Color.BLACK;
if(view.getBackground() instanceof ColorDrawable) {
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
initIfNeeded();
// If the ColorDrawable makes use of its bounds in the draw method,
// we may not be able to get the color we want. This is not the usual
// case before Ice Cream Sandwich (4.0.1 r1).
// Yet, we change the bounds temporarily, just to be sure that we are
// successful.
ColorDrawable colorDrawable = (ColorDrawable)view.getBackground();
mBounds.set(colorDrawable.getBounds()); // Save the original bounds.
colorDrawable.setBounds(0, 0, 1, 1); // Change the bounds.
colorDrawable.draw(mCanvas);
color = mBitmap.getPixel(0, 0);
colorDrawable.setBounds(mBounds); // Restore the original bounds.
}
else {
color = ((ColorDrawable)view.getBackground()).getColor();
}
}
return color;
}
questa dovrebbe essere la risposta accettata – IHeartAndroid
Il modo più semplice per ottenere il il colore per me è:
int color = ((ColorDrawable)button.getBackground()).getColor();
Testato e funzionante su Lollipop 5.1.1
Prova questo:
list_view.getChildAt(position).setBackgroundColor(Color.YELLOW);
ColorDrawable corItem = (ColorDrawable) list_view.getChildAt(position).getBackground();
if(corItem.getColor() == Color.YELLOW){
Toast.makeText(NovoProcessoActivity.this,"Right Color!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(NovoProcessoActivity.this,"Wrong Color!", Toast.LENGTH_SHORT).show();
}
o
int color =((ColorDrawable) list_view.getChildAt(position).getBackground()).getColor();
- 1. pulsante di Android colore di sfondo
- 2. come ottenere il colore di sfondo del pulsante su Android?
- 3. Ottieni il colore di sfondo della finestra
- 4. Ottieni il colore di sfondo di un layout
- 5. C# Cambia il colore di sfondo di un pulsante
- 6. Pulsante di azione mobile Android Colore di sfondo semitrasparente
- 7. Colore sfondo Android ImageButton
- 8. impostare il colore di sfondo: Android
- 9. Come cambiare il colore di un pulsante in Android Studio
- 10. Cambia il colore di un pulsante disabilitato in Android
- 11. Pulsante di selezione sfondo
- 12. Come impostare il colore di sfondo del pulsante Android (normale + premuto) da Android xml
- 13. AlertDialog colore di sfondo
- 14. posizione sfondo per il colore di sfondo
- 15. Come modificare il colore di sfondo del pulsante di attivazione su Android
- 16. pulsante di Android di selezione sfondo
- 17. Android: come ottenere il colore di sfondo dell'attività in Java?
- 18. Pulsante Cambia Colore di sfondo tramite pattern MVVM in WPF
- 19. Android: pulsante con due colori di sfondo
- 20. Colore sfondo Android WebView
- 21. Ottieni il colore dell'immagine
- 22. Colore bordo pulsante Android
- 23. Android: Cambia colore di sfondo del frammento
- 24. Android - SimpleCursorAdapter.ViewBinder - Imposta colore di sfondo
- 25. Cambiare il colore di sfondo di TextView al click android
- 26. Android: cambia dinamicamente TextView Colore di sfondo
- 27. ActionBar Android non cambia colore di sfondo
- 28. layout Android immagine di sfondo e colore
- 29. Come impostare il colore di un UIButton all'interno (non il colore di sfondo)
- 30. rimozione di colore di sfondo di una vista in Android
Sei sicuro getColor() Ottiene l'ID? Penso che ottenga il valore int reale del colore (cioè 0xAARRGGBB). Ho provato questo con "# 00000001" e ha restituito 1. – brianestey
Nel mio test ho fatto 'button.setBackground (R.color.green)' e quindi ho controllato la risposta e sicuramente non era il vero ID colore. Preferirei un numero intero di colori appropriato, quindi posso 'Color.red (int)', 'Color.green (int)', 'Color.blue (int)' it. Ma nel mio test su Android 3.2, questo non era il caso.Immagino che sia incoerente, restituendo un colore int o resid, a seconda del contesto. –
è solo API 11+ –