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?

  • Parse HTML in Android
  • Wie man JSONArray in android analysiert
  • Wie kann ich einen Namespace mit dem SAX-Parser analysieren?
  • Analysieren der lokalen XML-Datei mit Sax in Android
  • Get und Parse CSV-Datei in Android
  • Füge JSON von diesem Link zu android Listview
  • Schließen / verstecken Sie die Android Soft Keyboard
  • Senden einer pdf-Datei an den Client vom Server über den Webdienst
  • IPhone / Android webapp Wrapper
  • Wie kann man die Art eines Extra in einem Bündel bestimmen, das von der Absicht gehalten wird?
  • QNetworkAccessManager - zuerst GET sehr langsam
  • Wie ändere ich ein Symbol der TextView programmgesteuert?
  • 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.