Voglio creare una classe personalizzata che prende un colore come uno dei suoi attributi quando è disposto in un file XML Android. Tuttavia, un colore potrebbe essere una risorsa o potrebbe essere una delle numerose specifiche di colore diretto (es. Un valore esadecimale). Esiste un semplice metodo preferito per l'utilizzo di AttributeSet
per recuperare il colore, poiché un numero intero che rappresenta un colore potrebbe fare riferimento a un valore di risorsa oa un valore ARGB?Come posso ottenere un colore in modo affidabile da un AttributeSet?
7
A
risposta
22
Diciamo che hai definito il tuo attributo di colore personalizzato come questo:
<declare-styleable name="color_view">
<attr name="my_color" format="color" />
</declare-styleable>
Poi nel costruttore della visualizzazione, è possibile recuperare il colore in questo modo:
public ColorView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.color_view);
try {
int color = a.getColor(R.styleable.color_view_my_color, 0);
setBackgroundColor(color);
} finally {
a.recycle();
}
}
Non lo sai in realtà si deve preoccupare di come l'attributo di colore è stato popolato, sia come questo
<com.test.ColorView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:my_color="#F00"
/>
o simili:
<com.test.ColorView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:my_color="@color/red"
/>
Procedimento getColor
restituirà un valore di colore in ogni caso.
Problemi correlati
- 1. Come creare un AttributeSet in Android?
- 2. Come posso scrivere in un file di testo in modo affidabile da Excel VBA?
- 3. Come ottenere SKAction (nome :) per funzionare in modo affidabile?
- 4. Come posso ottenere un ITextBuffer da EnvDTE.Window?
- 5. Come posso ottenere il RootViewController da un controller spinto?
- 6. ObservableList: come rilevare in modo affidabile un setAll?
- 7. Come inviare in modo affidabile un modulo HTML con JavaScript?
- 8. Come posso rilevare in modo affidabile un clic del collegamento in UIWebView?
- 9. SpriteKit: come posso ottenere il colore del pixel da un punto in SKSpriteNode?
- 10. PHPExcel: Come ottenere un COLORE CELLULARE
- 11. Come ottenere il colore di un pixel in un UIView?
- 12. Come ottenere un servizio di messaggi push affidabile?
- 13. Come posso ottenere facilmente un TextReader da un XDocument?
- 14. Come posso ottenere un CGImageRef da un file?
- 15. Come posso ottenere un IL bytearray da un DynamicMethod?
- 16. Come ripristinare in modo affidabile MySQL blob
- 17. Come posso riutilizzare un colore in un foglio di stile?
- 18. Come posso ottenere un valore da un URL?
- 19. Come posso determinare in modo affidabile se un browser supporta eventi di passaggio del mouse?
- 20. Chiave ssh copia affidabile da un host a un altro
- 21. Posso ottenere un byte [] da un BitmapImage in Silverlight?
- 22. Un modo per ottenere un codice colore esadecimale corrispondente dato un oggetto Color in Java?
- 23. Come posso ottenere un abbreviazione [] da un ByteBuffer
- 24. Come posso ottenere un oggetto HDC da un oggetto CDC?
- 25. Come intercettare il modulo in modo affidabile?
- 26. Come acquisire in modo affidabile l'accesso a Windows, disconnettersi, bloccare e sbloccare eventi da un servizio?
- 27. Come posso ottenere l'applicazione di origine da un evento Apple?
- 28. Come divido in modo da ottenere un valore decimale?
- 29. Come posso ottenere un NameTable da un XDocument?
- 30. Django: Come posso ottenere un blocco da un modello?
Impressionante, grazie! (Anche un buon uso di '# F00' :)) –
Non dimenticare di riciclare il tuo' TypedArray'. –