Ich möchte eine benutzerdefinierte Klasse erstellen, die eine Farbe als eines ihrer Attribute annimmt, wenn sie in einer Android-XML-Datei angeordnet ist. Eine Farbe könnte jedoch eine Ressource sein oder eine direkte Farbspezifikation (z. B. ein Hexadezimalwert). Gibt es eine einfache bevorzugte Methode, AttributeSet
zu verwenden, um die Farbe abzurufen, da eine Ganzzahl, die eine Farbe darstellt, sich entweder auf einen Ressourcenwert oder einen ARGB-Wert beziehen könnte?Wie kann ich zuverlässig eine Farbe von einem AttributeSet erhalten?
7
A
Antwort
22
Angenommen, Sie haben Ihre eigene Farb Attribut wie folgt definiert:
<declare-styleable name="color_view">
<attr name="my_color" format="color" />
</declare-styleable>
Dann im Konstruktor Ihrer Ansicht nach können Sie die Farbe wie folgt abrufen:
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();
}
}
Sie dies nicht tun tatsächlich müssen Sie sich sorgen, wie das Farbattribut ausgefüllt wurde, entweder
oder so:
<com.test.ColorView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:my_color="@color/red"
/>
getColor
Die Methode wird ein Farbwert in jedem Fall zurück.
Verwandte Themen
- 1. Wie kann ich ein AttributeSet aus einer style.xml erstellen?
- 2. Android - AttributeSet
- 3. Wie kann ich imagecolorallocate eine Farbe geben?
- 4. Wie kann ich eine neue Farbe erstellen?
- 5. Wo kann ich eine eigenständige nmake.exe erhalten?
- 6. Wie erhalten Sie zuverlässig Zeilenindex in JTable von MouseEvent?
- 7. Farbe von CGContext erhalten?
- 8. Wie kann ich in einem UIImage (oder seinen Derivaten) eine Farbe durch eine andere ersetzen?
- 9. Wie verfolge ich zuverlässig Kind-/Enkelprozesse auf einem POSIX-System?
- 10. Wie kann ich eine Grafik mit einem festen Seitenverhältnis erhalten?
- 11. Wie kann ich ein Bild zuverlässig um einen Punkt drehen?
- 12. Wie kann ich zwei PropertyInfos oder Methoden zuverlässig vergleichen?
- 13. Wie kann ich nur ein Teilrechteck von einem CALayer erhalten?
- 14. Wie kann ich einem .obj-Modell in Three.js Farbe hinzufügen?
- 15. Wie kann ich Wert von Textfeld auf einem Benutzersteuerelement erhalten
- 16. Wie kann ich den Benutzernamen von einem WCF-Authentifizierungsdienst erhalten?
- 17. Wie kann ich DOMAIN \ USER von einem AD DirectoryEntry erhalten?
- 18. Wie kann ich eine Nachricht erhalten
- 19. attributeSet hinzufügen, sondern basiert auf einem vorhandenen Satz - Magento
- 20. Wie kann ich Formularparameter von HttpListenerRequest erhalten?
- 21. Wie kann ich eine cgcolor aus RGB-Werten erhalten?
- 22. Wie kann ich zuverlässig von Excel VBA in eine Textdatei schreiben?
- 23. Wie kann ich eine Entität von Doctrine Fixture Referenz erhalten?
- 24. Wie kann ich eine Platzhaltersuche verwenden, um eine Liste von Scaffolding in einem CakePHP zu erhalten?
- 25. Wie teile ich eine Zeichenfolge in Python zuverlässig?
- 26. Wie Akzent Farbe programmgesteuert erhalten?
- 27. Wie kann ich eine Liste von Dateien von einem Server mit Transmit erhalten?
- 28. Wie kann ich eine zufällige Anzahl von atmosphärischem Rauschen erhalten?
- 29. Wie kann ich eine genaue ganze Zahl von Fließkommazahl erhalten?
- 30. Wie kann ich eine lesbare Beschreibung von einer Signalnummer erhalten?
Ehrfürchtig, danke! (Nette Verwendung von '# F00' auch :)) –
Vergessen Sie nicht, Ihre' TypeArray' zu recyceln. –