2010-12-14 4 views
0

Je crée une vue personnalisée dérivée de EditText. Mon point de vue est déclarée comme classe interne comme ceci:La vue personnalisée devient invisible dans la mise en page XML

package com.woodshy.glucoXpert.DPass; 

//... 

public class DPassValuesEditActivity extends GenericScreenActivity { 

//... 

public static class DPassValuesEditField extends EditText { 
    protected String mDbFieldName; 


    public DPassValuesEditField(Context context) { 
     super(context); 
    } 

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

     TypedArray a = context.obtainStyledAttributes(attrs, 
       R.styleable.DPassValuesEditField); 

     CharSequence s = a 
       .getString(R.styleable.DPassValuesEditField_dbFieldName); 
     if (s != null) { 
      mDbFieldName = s.toString(); 
     } 

    } 

    //... 
} 
} 

res/fichier attrs.xml ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="DPassValuesEditField"> 
     <attr name="dbFieldName" format="string" /> 
    </declare-styleable> 
</resources> 

J'ajoute mon point de vue personnalisé à la mise en page xml:

<?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.woodshy.glucoXpert" 
    android:id="@+id/LinearLayout01" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <ScrollView android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:layout_gravity="center_vertical" 
     android:scrollbars="vertical"> 
     <RelativeLayout android:id="@+id/editFielsdLayout" 
      android:layout_height="fill_parent" android:layout_width="fill_parent" 
      android:clickable="true"> 
      <view 
       class="com.woodshy.glucoXpert.DPass.DPassValuesEditActivity$DPassValuesEditField" 
       android:id="@+id/edtWeight" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" android:width="75px" 
       android:maxLines="1" android:layout_below="@+id/TextView01" 
       android:lines="1" android:gravity="center" android:imeOptions="flagNoExtractUi" 
       android:inputType="numberDecimal" android:maxLength="3" 
       app:dbFieldName="Weight"></view> 

     </RelativeLayout> 


    </ScrollView> 
</LinearLayout> 

mais je ne peux pas le voir dans l'éditeur visuel (Eclipse SDK, Version: 3.6.1) alors qu'il apparaît dans l'application en cours d'exécution et fonctionne très bien.

Est-ce que je fais quelque chose de mal? Comment puis-je rendre visible ma vue personnalisée dans l'éditeur visuel?

merci.

Répondre

-1

Comment rendre visible ma vue personnalisée dans l'éditeur visuel?

Vous ne pouvez pas.

+3

Cristian, avez-vous des liens concernant votre déclaration? AFAIK, dans le cas où la vue personnalisée est déclarée comme classe ordinaire (pas interne), nous pouvons l'utiliser dans l'éditeur visible. Et c'est visible. – woodshy

0

Avait le même problème. On dirait que (plugin) besoin de recharger quelque chose avant de pouvoir afficher des vues personnalisées. Essayez de basculer la plate-forme cible dans l'éditeur de disposition graphique du courant à un autre (par exemple, de 2.1 à 2.3). Cela aide et même après le retour à "courant" (2.1 dans l'exemple), il continue à afficher des vues personnalisées.

Également parfois nécessaire de redémarrer Eclipse ...

Questions connexes