2017-05-05 4 views
0

私はAndroidを初めて使用しています。その中にScrollViewを作成し、内部にTextViewsとPickersを含む垂直線形レイアウトを追加しました。これらはすべてプログラムで作成されています。私の問題は、setContentView(scroll)行にあります。これは、私が作成した(プログラムではない)すべてのオブジェクトを、後ろのConstraintLayoutでカバーするようです。しかし、私はすでに動的ScrollViewの高さを800に設定しました。ScrollViewの後ろに4つのボタンを表示するにはどうしたらいいですか?AndroidのsetContentview(scroll)は、ConstraintLayoutオブジェクトを背面に隠します。

参照くださいスクリーンショット:

non dynamic objects in constraintlayout

programmatically created objects in linearlayout inside scrollview

はここのコードです。

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

あなたの助けのために事前にありがとうございます。

答えて

0

LinearLayoutをプログラムで追加するのではなく、XMLで宣言してください。あなたは常に線形とスクロールビューを持ちます。ループの中で行うのと同じように、Linearに目的のビューを塗りつぶします。そうすれば、ビューが適切なサイズで適切な位置に確実に配置されます。

+0

ありがとうございます。また、プログラムで作成する代わりに、XML内のScrollView(LinearLayoutの親)も宣言する必要がありますか? –

+0

ありがとうございます。出来た :)。これはベストプラクティスです。より多くの制御のためにXMLでレイアウトを作成し、コンテンツを動的に追加します。 –

+0

はい、最初から表示する必要があることが分からない場合にのみ、プログラムでビューを作成する必要があります。それがあなたに役立つなら、それを正解とマークしてください! :) –

関連する問題