试图创建微调器阵列

时间:2013-12-28 03:28:20

标签: android spinner

我创建了微调器的数组但是当我在模拟器中运行时,微调器就像"隐藏"其他旋转器。我如何设置微调器的位置,以便它可以自动形成一个良好的顺序。 这是我的代码

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++;
    }

这是结果

enter image description here

3 个答案:

答案 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);