2013-08-16 3 views
0

J'essaye de gonfler xml-layout dans la classe View personnalisée, qui est ensuite placée dans LinearLayout dans un logiciel réel. Après quelques recherches sur Google j'ai réussi à créer classe personnalisée qui gonfle la mise en page en utilisant la classe suivante:Comment gonfler xml-layout en enfant Voir

public class LitteringView extends RelativeLayout 
{ 

    public LitteringView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     View.inflate(context, R.layout.littering_layout, this); 

    } 


    public LitteringView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     // TODO Auto-generated method stub 
     for(int i = 0 ; i < getChildCount() ; i++){ 
      getChildAt(i).layout(l, t, r, b); 
     } 
    } 


    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // TODO Auto-generated method stub 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 





} 

Maintenant, il gonfle certainement quand je l'ajoute à la LinearLayout:

layout.addView(new LitteringView(getActivity())); 

Le problème est qu'il faut la tout l'écran alors que l'écran devrait être divisé également entre les trois enfants de LinearLayout. D'autres vues sont également créées dynamiquement. Comment je peux l'empêcher de prendre tout l'espace? J'essaie de créer un View/class personnalisé et d'y regrouper ses fonctions que je pourrais ensuite facilement ajouter à la mise en page parente (dans ce cas le LinearLayout) tout en voulant utiliser xml pour définir la mise en page du View .

Répondre

1

Vous devez utiliser 'poids' pour vos vues. Un exemple simple pour cela:

Layout.LayoutParams params = new LinearLayout.LayoutParams(width, height, weight); 

Vous devez l'optimiser pour votre cas. Donnez à tous vos points de vue une valeur de poids égale (par exemple: 1 pour chacun d'eux) et ils devraient partager la vue.

Questions connexes