Dies ist eine alte Version des Dokuments!
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 } . . . }