Was ist AttributeSet und wie kann ich es verwenden?

Was ist AttributeSet in Android?

Wie kann ich es für meine benutzerdefinierte Ansicht verwenden?

  • Führen Sie einen Shell-Befehl über QProcess auf Android Platform
  • Importiere android.R in Eclipse: Warum?
  • Fehler beim Hinzufügen eines Bearbeitungstextes in Eclipse
  • Dolch und Butter Messer vs Android Annotationen
  • Siehe Android neuere Aufgabe, die vom Benutzer ausgeführt wird
  • Kann ich Bilddatei Breite und Höhe von uri in android?
  • Nehmen Sie Bild und konvertieren Sie zu Base64
  • Wie man android Aktivität von Eclipse mit benutzerdefinierten Absicht zu starten
  • Wie kann man ein Programm unter Eclipse stoppen?
  • Injektion von generischen Klasse mit Dolch
  • Mit dem Button-Tag kann ich die Schaltfläche anpassen?
  • Android: swipe Bildschirm, um eine andere Aktivität zu öffnen?
  • 4 Solutions collect form web for “Was ist AttributeSet und wie kann ich es verwenden?”

    AttributeSet ist der Satz von Eigenschaften, die in einer XML-Ressourcendatei angegeben sind. Du solltest nichts Besonderes in deiner benutzerdefinierten Ansicht machen. Die View(Context context, AttributeSet attrs) wird aufgerufen, um eine Ansicht aus einer Layoutdatei zu initialisieren. Füge diesen Konstruktor einfach deiner benutzerdefinierten Ansicht hinzu. Schauen Sie sich das Custom View- Beispiel im SDK an, um es zu sehen.

    Eine späte Antwort, obwohl eine detaillierte Beschreibung für andere.

    AttributeSet (Android Docs)

    Eine Sammlung von Attributen, wie sie mit einem Tag in einem XML-Dokument verknüpft sind.

    Grundsätzlich, wenn Sie versuchen, eine benutzerdefinierte Ansicht zu erstellen, und Sie möchten Werte wie Abmessungen, Farben usw. übergeben, können Sie dies mit AttributeSet tun.

    Hier ist ein Beispiel

    Stellen Sie sich vor, Sie möchten eine View wie unten erstellen

    Bildbeschreibung hier eingeben

    Es ist ein Rechteck mit gelbem Hintergrund und ein Kreis in ihm, mit sagen wir 5dp Radius und grünem Hintergrund. Wenn du deine Ansichten möchtest, um die Werte von Hintergrundfarben und Radius durch xml zu nehmen, wie diese

     <com.anjithsasindran.RectangleView app:radiusDimen="5dp" app:rectangleBackground="@color/yellow" app:circleBackground="@color/green" /> 

    Nun, das ist AttributeSet verwendet wird. Sie können diese Datei attrs.xml im Werteordner mit den folgenden Eigenschaften haben.

     <declare-styleable name="RectangleViewAttrs"> <attr name="rectangle_background" format="color" /> <attr name="circle_background" format="color" /> <attr name="radius_dimen" format="dimension" /> </declare-styleable> 

    Da dies eine Ansicht ist, erstreckt sich die Java-Klasse von View

     public class RectangleView extends View { public WashingMachineView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.RectangleViewAttrs); mRadiusHeight = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_radius_dimen, getDimensionInPixel(50)); mCircleBackgroundColor = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_circle_background, getDimensionInPixel(20)); mRectangleBackgroundColor = attributes.getColor(R.styleable.RectangleViewAttrs_rectangle_background, Color.BLACK); } 

    So jetzt können wir diese Eigenschaften zu unserem RectangleView in deinem XML-Layout verwenden und wir erhalten diese Werte im RectangleView Konstruktor.

     app:radius_dimen app:circle_background app:rectangle_background 

    Sie können AttributeSet verwenden, um zusätzliche, benutzerdefinierte Werte für Ihre Ansicht zu erhalten, die Sie in der XML-Datei definieren. Beispielsweise. Es gibt ein Tutorial zum Definieren von benutzerdefinierten Attributen, das besagt: "Es ist möglich, Werte aus dem AttributeSet direkt zu lesen", aber es sagt nicht, wie man das tatsächlich macht. Es warnt jedoch, dass, wenn Sie keine Stilattribute verwenden :

    • Ressourcenreferenzen innerhalb von Attributwerten werden nicht behoben
    • Styles werden nicht angewendet

    Wenn du das ganze Stilattribut-Ding ignorieren willst und nur die Attribute direkt bekommst:

    Example.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://www.chooseanything.org"> <com.example.CustomTextView android:text="Blah blah blah" custom:myvalue="I like cheese"/> </LinearLayout> 

    Beachten Sie, dass es zwei Zeilen xmlns (xmlns = XML-Namespace) gibt, die zweite ist definiert als xmlns: custom. Dann unterhalb dieser Brauch: myvalue ist definiert.

    CustomTextView.java

     public CustomTextView( Context context, AttributeSet attrs ) { super( context, attrs ); String sMyValue = attrs.getAttributeValue( "http://www.chooseanything.org", "myvalue" ); // Do something useful with sMyValue } 

    Wenn eine Ansicht aus einem XML-Layout erstellt wird, werden alle Attribute im XML-Tag aus dem Ressourcenbündel gelesen und an den Viewer des Viewers als AttributeSet

    Obwohl es möglich ist, Werte aus dem AttributeSet direkt zu lesen, hat dies einige Nachteile:

    • Ressourcenreferenz innerhalb der Attributwerte sind nicht aufgelöst
    • Styles werden nicht angewendet

    obtainStyledAttribute() stattdessen AttributeSet , obtainStyledAttribute() . Diese Methode gibt TypedArray Array von Werten zurück, die deferenced und gestylt wurden.

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