web-dev-qa-db-fra.com

Android: Ajouter une vue à une mise en page spécifique à partir du code

Je souhaite ajouter dynamiquement des vues à un LinearLayout déjà défini en XML.

Je peux ajouter des vues à l'écran mais elles ne sont pas placées "à l'intérieur" du droit LinearLayout

Comment puis-je obtenir une référence à cette disposition spécifique à partir du code, similaire à l'obtention d'un View en utilisant findViewById()?

22
Erik

Comme Marcarse a souligné que vous pouvez faire 

ViewGroup layout = (ViewGroup) findViewById(R.id.your_layout_id);
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setText("Added tv");
layout.addView(tv);

La classe LinearLayout étend ViewGroup qui étend elle-même la classe View. Cela rend l'acquisition d'une référence à une mise en page aussi simple que l'obtention d'une référence à une autre vue. 

42
Janusz

Cela devrait fonctionner:

LinearLayout layout = (LinearLayout) findViewById(R.id.your_layout_id);
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setText("Added tv");
layout.addView(tv);
21
Macarse

Meilleure version: Pour ajouter une autre mise en page dans activité/fragment

LayoutInflater mInflater = LayoutInflater.from(getActivity());
View mProgressBarFooter = mInflater.inflate(R.layout.spinner, null, false);
textLoader = (TextView) mProgressBarFooter.findViewById(R.id.footer_label);

Happy Coding (-:

0
sumit mehra