Android

Custom-Views mit eigenen Attributen

Einem CustomView sollen eigene Werte mitgegeben werden.
Im folgenden Beispiel ein String myString und eine Zahl myNumber.
Im Javacode wird dann mittels obtainStyledAttributes(..) auf diese Werte zugegriffen.



Dazu wird eine Datei attrs.xml im Ordner res/values angelegt, welche diese Attribute definiert:

<?xml version="1.0" encoding="utf-8">
 
<resources>
   <declare-styleable name="MyCustomView">
      <attr name="myString" format="string" />
      <attr name="myNumber" format="integer" />
   </declare-styleable>
</resources>



In der LayoutDatei myCustomView.xml im Ordner res/layout können dann die Werte festgelegt werden:

<?xml version="1.0" encoding="utf-8">
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res/com.sowas.javawiki"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   <com.sowas.javawiki.MyCustomView android:id=@+id/myCustomView"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      myString="Huhu"
      myNumber="1234"
   />
</LinearLayout>



Im Java-Code kann die wie folgt auf die Attribute zugegriffen werden:

package com.sowas.javawiki;
 
import ...
 
public class MyCustomView extends View {
 
   public MyCustomView(Context context, AttributeSet attrs) {
      super(context, attrs);
      TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView);
      String str = ta.getString(R.styleable.MyCustomView_myString);
      int number = ta.getInt(R.styleable.MyCustomView_myNumber);
      ta.recycle();
      System.out.println("Der String: " + str);     // Ausgabe: Huhu
      System.out.println("Die Nummer: " + number);  // Ausgabe: 1234
   }
 
   .
   .
   .
}

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007