我创建了微调器的数组但是当我在模拟器中运行时,微调器就像"隐藏"其他旋转器。我如何设置微调器的位置,以便它可以自动形成一个良好的顺序。 这是我的代码
Spinner[] arrSpinner = new Spinner[10];
ArrayAdapter arrAdapter[] = new ArrayAdapter[10];
List[] listSoal = new ArrayList[10];
for(int i=0;i<10;i++){
listSoal[i] = new ArrayList<String>();
listSoal[i].add("Soal "+i);
}
List[] listJawaban = new ArrayList[10];
for(int i=0;i<10;i++){
listJawaban[i] = new ArrayList<String>();
listJawaban[i].add("Pilih Jawaban");
listJawaban[i].add("Pilihan 2");
listJawaban[i].add("Pilihan 3");
listJawaban[i].add("Pilihan 4");
}
int soal = 1;
for(int i=0;i<10;i++){
TextView tv = new TextView(getApplicationContext());
tv.setText("Soal "+soal);
addContentView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
//addContentView(tv, null);
arrSpinner[i] = new Spinner(this,0);
arrAdapter[i] = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,listJawaban[i]);
arrSpinner[i].setPrompt("Pilih Jawaban");
addContentView(arrSpinner[i], new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
arrAdapter[i].setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
arrSpinner[i].setOnItemSelectedListener(new SpinnerAction());
arrSpinner[i].setAdapter(arrAdapter[i]);
soal++;
}
这是结果
答案 0 :(得分:0)
您正在致电
addContentView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
你把它们放在同一个位置。
如果您将这些内容放在FrameLayout中,则需要使用类似MarginLayoutParams
的内容,并为每个视图提供一个上边距,以便将它们分开。
或者您可以通过将它们放在LinearLayout中来修复它。
答案 1 :(得分:0)
您应该将一些LinearLayout或其他布局作为根布局,以将动态微调器添加为该视图的子项。
为此,您必须这样做,View linearLayout = findViewById(R.id.layoutID);
现在您的所有spinner will be add child of
linearLayout
Spinner spinner = new Spinner(this);
spinner .setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
...
...
//then you spinner adapter code
linearlayout1.addView(spinner);
我希望这会帮助您以相同的方式管理动态微调器,即使您没有LinearLayout
,也可以动态创建并使用它。
LinearLayout linearlayout1 = new LinearLayout(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearlayout1.setOrientation(LinearLayout.HORIZONTAL);
layoutParams.setMargins(10, 0, 0, 0);
linearlayout1.setLayoutParams(layoutParams );
答案 2 :(得分:0)
使用布局
的多个微调器 LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
for (int i = 0; i < 2; i++) {
Spinner spinner = new Spinner(this);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list.get(i));
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.addView(spinner, params);
}
alert.setView(ll);