Desidero trovare il colore di sfondo di un layout dal mio codice. C'è un modo per trovarlo? qualcosa come linearLayout.getBackgroundColor()
?Ottieni il colore di sfondo di un layout
risposta
Questo può essere eseguito solo in API 11+ se lo sfondo è un colore solido.
int color = Color.TRANSPARENT;
Drawable background = view.getBackground();
if (background instanceof ColorDrawable)
color = ((ColorDrawable) background).getColor();
Stavo andando a modificare la mia risposta e dire che in particolare potrebbe funzionare! Tuttavia, non sono sicuro del motivo per cui esiste una restrizione API 11+? 'ColorDrawable' sembra disponibile dall'API 1 e anche view.getBackground(). –
Nevermind. Vedo che '.getColor' per ColorDrawable è stato aggiunto in API 11. –
Puoi convertire il' Disegnabile' in 'Bitmap' e ottenere il primo pixel. 'int color = bitmap.getPixel (0, 0);' –
ColorDrawable.getColor() funziona solo con API di livello superiore a 11, in modo da poter utilizzare questo codice per sostenerlo dal livello API 1. Uso riflessione sotto il livello API 11.
public static int getBackgroundColor(View view) {
Drawable drawable = view.getBackground();
if (drawable instanceof ColorDrawable) {
ColorDrawable colorDrawable = (ColorDrawable) drawable;
if (Build.VERSION.SDK_INT >= 11) {
return colorDrawable.getColor();
}
try {
Field field = colorDrawable.getClass().getDeclaredField("mState");
field.setAccessible(true);
Object object = field.get(colorDrawable);
field = object.getClass().getDeclaredField("mUseColor");
field.setAccessible(true);
return field.getInt(object);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return 0;
}
Per ottenere il colore di sfondo di un layout:
LinearLayout lay = (LinearLayout) findViewById(R.id.lay1);
ColorDrawable viewColor = (ColorDrawable) lay.getBackground();
int colorId = viewColor.getColor();
se è RelativeLayout poi basta trovare il suo ID e utilizzare non oggetto invece di LinearLayout.
Il modo più semplice per farlo è:
view.getSolidColor();
modo breve e semplice:
int color = ((ColorDrawable)view.getBackground()).getColor();
- 1. Ottieni il colore di sfondo della finestra
- 2. Ottieni il colore di sfondo di un pulsante in Android
- 3. layout Android immagine di sfondo e colore
- 4. come impostare il colore di sfondo nel layout xml?
- 5. AlertDialog colore di sfondo
- 6. posizione sfondo per il colore di sfondo
- 7. Ottieni il colore dell'immagine
- 8. Imposta sfondo widget di colore
- 9. Cambia il colore di sfondo di NSButton
- 10. Come cambiare il colore di sfondo attorno a un DialogFragment?
- 11. cambia colore di sfondo
- 12. PreferenceFragment colore di sfondo
- 13. Ottenere il colore di sfondo di un ImageView
- 14. Come cambiare il colore di sfondo di un controllo TreeView
- 15. C# Cambia il colore di sfondo di un pulsante
- 16. Come modificare il colore di sfondo di un SFSafariViewController?
- 17. Come cambiare il colore di sfondo di un NSPopupButton?
- 18. Come animare il colore di sfondo di un UILabel?
- 19. Transizione di colore di sfondo
- 20. Imposta il colore di sfondo di una vista Layout su una sfumatura in Android?
- 21. Come colorare il colore di sfondo UIBarButtonItem?
- 22. Ignora l'attributo dello sfondo dell'elemento di inclusione per cambiare il colore di sfondo
- 23. Wpf animare il colore di sfondo
- 24. Come impostare il colore di sfondo QWidget?
- 25. Cambiare il colore di sfondo su NSAttributedString
- 26. xterm: come cambiare il colore di sfondo?
- 27. Come cambiare il colore di sfondo FAB
- 28. impostare il colore di sfondo: Android
- 29. colore del motivo sconosciuto per il colore di sfondo attributo
- 30. Ottieni il colore corrente
Dal momento che il fondo non può essere un colore, è possibile utilizzare linearLayout.getBackground() che darà tu un 'Drawable'. Non ci sono API per ottenere il colore di sfondo, in particolare. [Leggi di più nella documentazione per View] (http://developer.android.com/reference/android/view/View.html#getBackground%28%29) –
Ma ho davvero bisogno di trovare il colore di un layout. Ci dovrebbe essere un altro modo! o è possibile ottenerlo da 'Drawable'? –