web-dev-qa-db-fra.com

Ajouter du contenu à une mise en page linéaire de manière dynamique?

Si, par exemple, j'ai défini une mise en page linéaire racine d'orientation verticale:

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
      Android:id="@+id/my_root"
      Android:layout_height="wrap_content"
      Android:layout_width="fill_parent"
      Android:orientation="vertical"

    <!-- I would like to add content here dynamically.-->

</LinearLayout>

Dans la structure linéaire racine, je voudrais ajouter plusieurs dispositions linéaires enfants , chacune des orientations de la disposition linéaire enfant étant horizontal . Avec tout cela, je pourrais me retrouver avec une table comme sortie.

Par exemple, root avec une disposition enfant telle que:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
      Android:id="@+id/my_root"
      Android:layout_height="wrap_content"
      Android:layout_width="fill_parent"
      Android:orientation="vertical"

    <!-- 1st child (1st row)-->
    <LinearLayout 
        ...
       Android:orientation="horizontal">

          <TextView .../>
          <TextView .../>
          <TextView .../>
    </LinearLayout>

     <!-- 2nd child (2nd row)-->
     ...
</LinearLayout>

Le nombre de présentations linéaires enfants et leur contenu étant assez dynamiques, j'ai décidé d'ajouter le contenu à la présentation linéaire racine par programme.

Comment la deuxième présentation peut-elle être ajoutée à la première par programme, ce qui pourrait également définir tous les attributs de présentation pour chaque enfant et ajouter d'autres éléments à l'intérieur de l'enfant?

66
Leem

Dans votre onCreate(), écrivez ce qui suit

LinearLayout myRoot = (LinearLayout) findViewById(R.id.my_root);
LinearLayout a = new LinearLayout(this);
a.setOrientation(LinearLayout.HORIZONTAL);
a.addView(view1);
a.addView(view2);
a.addView(view3);
myRoot.addView(a);

view1, view2 et view3 sont vos TextViews. Ils sont facilement créés par programme.

94
Sherif elKhatib
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
View child = getLayoutInflater().inflate(R.layout.child, null);
layout.addView(child);
69
gregory561

Vous pouvez réaliser LinearLayout en cascade de la manière suivante:

LinearLayout root = (LinearLayout) findViewById(R.id.my_root);    
LinearLayout llay1 = new LinearLayout(this);    
root.addView(llay1);
LinearLayout llay2 = new LinearLayout(this);    
llay1.addView(llay2);
5
Balaji Khadake