2010-06-22 7 views
2

Je construis une vue personnalisée et essaie de comprendre comment l'intégrer avec l'éditeur de mise en page gui dans Eclipse. J'ai ajouté le code ci-dessous à mon constucteur.Android "éditeur de mise en page" et "propriété personnalisée"

public baseGrid(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    if (attrs.getAttributeValue(null, "bufferTop") != null) 
    bufferTop = Integer.parseInt(attrs.getAttributeValue(null, "bufferTop")); 
    ... 

et il travaille à lire cet attribut xml (... bufferTop="10" ...) à partir du fichier de mise en page XML. Toutefois, existe-t-il un moyen d'afficher bufferTop dans l'éditeur de propriétés de l'interface graphique en tant que propriété que je peux définir sans modifier le code XML?

Merci

Répondre

2

Essayez d'ajouter le fichier "attrs.xml" à dossier "res/valeurs".

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="MyAttrs">  
     <attr name="bufferTop" format="dimension" /> 
     <attr name="myColor" format="color" /> 
     <attr name="myInt" format="integer" />   
     <attr name="myFloat" format="float" /> 
    </declare-styleable>  
</resources> 

lu par ce code:

public baseGrid(Context contxt, AttributeSet attrs) { 
TypedArray a = context.obtainStyledAttributes(attrs, 
       R.styleable.MyAttrs); 
bufferTop = a.getInt(R.styleable.MyAttrs_bufferTop, 10); 
a.recycle(); 
} 

widgets Définir ainsi:

<?xml version="1.0" encoding="utf-8"?> 
< YOURPACKAGE.BaseGrid 
     android:background="@drawable/red" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     app:bufferTop="100"/> 
+0

Merci pour la réponse. Cela m'a donné 90% du chemin. Dans mon fichier de mise en page, j'ai dû ajouter un élément d'espace de nommage comme indiqué ci-dessous. xmlns: grid = "http://schemas.android.com/apk/res/" J'ai alors pu ajouter un attribut au XML (... grid: bufferTop = "15dip" ...) et lisez-le à travers le code que vous avez spécifié. Toutefois, le nouvel attribut n'apparaît pas dans la partie GUI de l'éditeur de disposition à moins que je ne l'ajoute manuellement au code XML en premier. Une fois que je l'ajoute au XML, il apparaît sous Misc. dans l'éditeur de propriétés de l'interface graphique. Est-il impossible de le faire apparaître sans l'ajouter d'abord au XML? – Steve0212

+0

J'essaie de suivre avec vous les gars, mais je pense que je suis coincé avec l'espace de nom. Qu'avez-vous réellement utilisé pour le ? Est-ce le nom du package complet? – electrichead

Questions connexes