2010-12-11 22 views
3

Ich möchte eine benutzerdefinierte Ansicht erstellen TestView Klasse, für die ich Objekt über new TestView() erstellen kann. Eine neue Ansichtsklasse benötigt jedoch ein AttributeSet-Objekt. Woher bekomme ich das AttributeSet und was muss es beinhalten?Erstellen von benutzerdefinierten Ansicht

Antwort

10

Es ist nicht obligatorisch, und meistens müssen Sie sich nicht einmal darum kümmern, solange Sie Konstruktoren von View bereitstellen, die sie an super() weiterleiten.

public CustomView(Context context) // No Attributes in this one. 
{ 
    super(context); 
    // Your code here 
} 

public CustomView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
    // Your code here 
} 

public CustomView(Context context, AttributeSet attrs, int default_style) 
{ 
    super(context, attrs, default_style); 
    // Your code here 
} 

View nimmt die schwere Arbeit tun mit all den android:* Attribute für den Umgang, die Sie in der Regel in würde passieren, wenn die Aussicht auf ein Layout hinzuzufügen. Ihre Konstrukteure könnte die Verwendung dieser Attribute oder machen sie ihre eigenen, wenn Sie sie definiert haben:

<com.blrfl.CustomView 
android:id="@+id/customid" 
android:layout_weight="1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_gravity="center" 
blrfl:foo="bar" 
blrfl:quux="bletch" 
/> 
+0

Ich verbrachte viele Stunden damit, ein Att-Set on the fly zu generieren, ich fand es nahezu unmöglich, irgendwelche Dokumentation oder Beispiele dafür zu finden. Eine gute Frage könnte sein, wie man die Eigenschaften foo und quux einstellt, wenn man attrs nicht benutzt und neue CustomView() benutzt. – Emile

+0

CustomView (String foo, String bletch) vielleicht. – Emile

+0

Frag es und ich werde eine Antwort posten. – Blrfl

0

Entweder von 3 Konstruktor von Ansichtsklasse bereitgestellt wird, kann implementiert werden .. so die Bereitstellung Konstruktor mit attributeSet nicht zwingend erforderlich ist.

Verwandte Themen