Dies ist eine alte Version des Dokuments!


Android

Custom-Views mit eigenen Attributen

Einem CustomView sollen eigene Werte mitgegeben werden.
Im folgenden Beispiel ein String myString und eine Zahl myNumber.



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