2017-05-05 4 views
0

Je suis nouveau sur Android et j'ai créé un ScrollView et à l'intérieur, ajouté une disposition linéaire verticale qui contient TextViews et sélecteurs. Tous ces éléments ont été créés par programme. Mon problème est sur la ligne setContentView (scroll). Il semble couvrir tous les objets que j'ai créés (pas par programmation) sur le ConstraintLayout à l'arrière. Mais j'ai déjà réglé la hauteur de mon ScrollView dynamique à 800. Comment puis-je afficher les 4 boutons à l'arrière du ScrollView?Android setContentview (scroll) cache les objets ConstraintLayout à l'arrière

Voir les screenshots:

non dynamic objects in constraintlayout

programmatically created objects in linearlayout inside scrollview

Voici le code.

 ScrollView scroll = new ScrollView(this); 
 
     
 
     scroll.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
 
       800)); 
 
     scroll.setFillViewport(true); 
 
     
 
     setContentView(scroll); //here is the line with issue 
 

 
     LinearLayout linearLayout = new LinearLayout(this); 
 
     linearLayout.setOrientation(LinearLayout.VERTICAL); 
 
     LayoutParams lp1 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
 
     linearLayout.setLayoutParams(lp1); 
 

 
     scroll.addView(linearLayout); 
 
     
 
     for(int i = 0; i < res2.getCount(); i++) 
 
     { 
 
      NumberPicker numberPicker = new NumberPicker(this); 
 
      numberPicker.setMinValue(0); 
 
      numberPicker.setMaxValue(100); 
 
      TextView textView = new TextView(this); 
 
      textView.setText(/*textArray[i] + " " +*/ res2.getString(1)); 
 
      linearLayout.addView(textView); 
 
      linearLayout.addView(numberPicker); 
 

 
      res2.moveToNext(); 
 
     }

Nous vous remercions d'avance pour votre aide.

Répondre

0

Déclarez votre LinearLayout sur votre fichier XML au lieu de l'ajouter par programmation. Vous aurez toujours le linéaire et le scrollview. Puis remplissez le Linéaire avec la vue souhaitée comme vous le faites à l'intérieur de la boucle. De cette façon, vous vous assurerez que vos opinions sont dans la bonne position avec la bonne taille.

+0

Merci. Dois-je aussi déclarer le ScrollView (parent de LinearLayout) dans le XML au lieu de le créer par programme? –

+0

Merci beaucoup. Ça a marché :). C'est donc la meilleure pratique. Créez des mises en page par xml pour plus de contrôle, puis ajoutez dynamiquement du contenu. –

+0

Oui, vous ne devriez créer les vues par programmation que si vous ne savez pas depuis le début ce que vous aurez besoin de montrer. Veuillez le marquer comme la bonne réponse s'il vous aide! :) –