Wie kann ich zuverlässig eine Farbe aus einem AttributeSet bekommen?

Ich möchte eine benutzerdefinierte Klasse erstellen, die eine Farbe als eines ihrer Attribute annimmt, wenn sie in einer Android-XML-Datei angelegt wird. Allerdings könnte eine Farbe eine Ressource sein oder es könnte eine von einer Reihe von direkten Farbspezifikationen (zB ein Hex-Wert) sein. Gibt es eine einfache bevorzugte Methode, um 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?

  • XML-Attribute vom Zusammenführungslayout zu RelativeLayout über Aufblasen
  • Android-Bitmap-Bildgröße in xml
  • RadioGroup checkedButton-Eigenschaft
  • Kann nicht auf Holo Thema von Werte-v11 / themes.xml
  • Wie man den Umriss meines Textes schwarz in xml für android färbt
  • Autocomplete funktioniert nicht in XML-Dateien in bestimmten Hierarchie
  • ImageView src mit ziehbarem Selektor ignoriert den aktivierten Zustand
  • Ist es möglich, in android Konstanten in XML zu definieren, die mit der Konfiguration variieren
  • One Solution collect form web for “Wie kann ich zuverlässig eine Farbe aus einem AttributeSet bekommen?”

    Angenommen, du hast dein eigenes Farbattribut so definiert:

     <declare-styleable name="color_view"> <attr name="my_color" format="color" /> </declare-styleable> 

    Dann können Sie in der Konstrukteur Ihrer Ansicht die Farbe wie folgt abrufen:

     public ColorView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.color_view); int color = a.getColor(R.styleable.color_view_my_color, 0); setBackgroundColor(color); } 

    Du musst dir eigentlich keine Sorgen machen, wie das Farbattribut bevölkert wurde

     <com.test.ColorView android:layout_width="match_parent" android:layout_height="match_parent" app:my_color="#F00" /> 

    Oder so:

     <com.test.ColorView android:layout_width="match_parent" android:layout_height="match_parent" app:my_color="@color/red" /> 

    Die getColor Methode gibt in jedem Fall einen Farbwert zurück.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.