2017-05-05 4 views
0

Ich bin neu bei Android und ich habe eine ScrollView erstellt und darin ein vertikales lineares Layout hinzugefügt, das TextViews und Picker enthält. Alle diese wurden programmgesteuert erstellt. Mein Problem ist auf setContentView (scroll) Zeile. Es scheint alle Objekte zu überdecken, die ich (nicht programmatisch) auf der ConstraintLayout auf der Rückseite erstellt habe. Aber ich habe bereits die Höhe meines dynamischen ScrollView auf 800 eingestellt. Wie kann ich die 4 Tasten auf der Rückseite von ScrollView anzeigen?Android setContentview (scroll) verbirgt die ConstraintLayout Objekte auf der Rückseite

Siehe Screenshots:

non dynamic objects in constraintlayout

programmatically created objects in linearlayout inside scrollview

Hier ist der 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(); 
 
     }

Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Deklarieren Sie Ihr LinearLayout auf Ihrem XML, anstatt es programmgesteuert hinzuzufügen. Sie haben immer den linearen und den Scrollview. Füllen Sie dann das Lineare mit der gewünschten Ansicht, so wie Sie es in for for loop tun. Auf diese Weise stellen Sie sicher, dass Ihre Ansichten mit der richtigen Größe an der richtigen Position sind.

+0

Danke. Sollte ich auch die ScrollView (Parent von LinearLayout) in der XML deklarieren anstatt sie programmatisch zu erstellen? –

+0

Vielen Dank. Es funktionierte :). Das ist also die beste Vorgehensweise. Erstellen Sie Layouts per XML für mehr Kontrolle und fügen Sie dann dynamisch Inhalte hinzu. –

+0

Ja, Sie sollten die Ansichten nur programmatisch erstellen, wenn Sie nicht von Anfang an wissen, was Sie anzeigen müssen. Bitte markieren Sie es als die richtige Antwort, wenn es Ihnen hilft! :) –

Verwandte Themen