2011-08-30 2 views
2

Est-il possible d'utiliser du code Java pour écrire dans le fichier main.xml? Je veux apporter quelques changements à la mise en page mais je l'ai basé sur les valeurs reçues de Java?Disposition Android et XML

Répondre

3

Oui, vous pouvez. En savoir plus sur YOURLAYOUT.LayoutParams

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html Utilisez le addRule() et indiquez ce que vous devez à votre objet de mise en page. Modifiez les valeurs avant de faire setContentView();

Quelque chose comme:

RelativeLayout rl = new RelativeLayout(this); 
     RelativeLayout.LayoutParams rlp= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT); 
     rlp.addRule(RelativeLayout.VISIBLE); //set the rules and parameters before you do setLayoutParams(); 
     rl.setLayoutParams(rlp); 
     setContentView(rl); 

Ou si vous souhaitez apporter des modifications sur la mise en page réelle du xml, alors vous ne le gonfler

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View v = inflater.inflate(R.layout.main, null); 
    RelativeLayout rl = (RelativeLayout)v.findViewById(R.id.relativeLayout1); 
    RelativeLayout.LayoutParams rlp= new RelativeLayout.LayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    rlp.addRule(RelativeLayout.VISIBLE); 
    rl.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)); 
    setContentView(rl); 
+0

Les deux approches fonctionnent. Je les ai testés. J'ai initialisé l'android: layout_width = "22px" et la même chose pour la hauteur. Et ils se sont avérés fonctionner. :) –

1

Vous pouvez ne changez en fait aucun fichier de mise en page xml à partir de l'application. Une fois emballés, les fichiers de disposition sont en lecture seule. Ce que vous pouvez faire (et je pense que c'est ce que suggère Nikola) est d'utiliser l'API pour soit définir votre mise en page en utilisant du code ou modifier la mise en page une fois qu'il a été gonflé à partir de xml.

Si vous souhaitez calculer ou récupérer des données qui définissent votre mise en page, puis vous rappeler les données pour la prochaine exécution de l'application, vous pouvez utiliser l'une des offres data storage methods proposées par Android.