Android - 以编程方式创建微调器显示问题
Android - Create spinner programatically display issue
基本上,我的程序提示用户从 MainActivity 的复选框中选择主题(10 个中最多 5 个)并将其 isChecked 布尔值发送到 NextActivity。收到每个真实值后,我需要创建一个微调器供用户从 A-F 中选择等级。
但是,问题是布局中的微调器是这样显示的。
我创建了一个 class 用于创建旋转器
public void createSpinner(String spinnerTitle, Spinner spinnerNumber){
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add(spinnerTitle);
spinnerArray.add("A");
spinnerArray.add("B");
spinnerArray.add("C");
spinnerArray.add("D");
spinnerArray.add("F");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinnerNumber.setAdapter(spinnerArrayAdapter);
}
然后,从之前的 activity 中获取值并检查其是否为真,以创建微调器。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grade);
LinearLayout layout = new LinearLayout(this);
Spinner spinner1 = new Spinner(this);
Spinner spinner2 = new Spinner(this);
.....
Spinner spinner10 = new Spinner(this);
Boolean check01 = getIntent().getExtras().getBoolean("C001");
Boolean check02 = getIntent().getExtras().getBoolean("C002");
.....
Boolean check10 = getIntent().getExtras().getBoolean("C010");
if (check01 == true) {
createSpinner("Subject C0001",spinner1);
layout.addView(spinner1);
}
if (check02 == true) {
createSpinner("Subject C0002",spinner2);
layout.addView(spinner2);
}
.....
if (check10 == true) {
createSpinner("Subject C0003",spinner3);
layout.addView(spinner3);
}
请指教如何让微调器垂直显示并居中显示。
另外,我如何检测创建了哪个微调器,以便我可以获得用户从微调器中选择的值。
要垂直显示,您需要将 LinearLayout
的方向设置为 vertical
。您可以在代码中这样做。
layout.setOrientation(LinearLayout.VERTICAL);
要使 Spinner
出现在中心位置,请将 layout
的引力设置为 CENTER_HORIZONTAL
。
LayoutParams layout_params = new LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT, Gravity.CENTER_HORIZONTAL);
layout.setLayoutParams(params);
基本上,我的程序提示用户从 MainActivity 的复选框中选择主题(10 个中最多 5 个)并将其 isChecked 布尔值发送到 NextActivity。收到每个真实值后,我需要创建一个微调器供用户从 A-F 中选择等级。
但是,问题是布局中的微调器是这样显示的。
我创建了一个 class 用于创建旋转器
public void createSpinner(String spinnerTitle, Spinner spinnerNumber){
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add(spinnerTitle);
spinnerArray.add("A");
spinnerArray.add("B");
spinnerArray.add("C");
spinnerArray.add("D");
spinnerArray.add("F");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinnerNumber.setAdapter(spinnerArrayAdapter);
}
然后,从之前的 activity 中获取值并检查其是否为真,以创建微调器。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grade);
LinearLayout layout = new LinearLayout(this);
Spinner spinner1 = new Spinner(this);
Spinner spinner2 = new Spinner(this);
.....
Spinner spinner10 = new Spinner(this);
Boolean check01 = getIntent().getExtras().getBoolean("C001");
Boolean check02 = getIntent().getExtras().getBoolean("C002");
.....
Boolean check10 = getIntent().getExtras().getBoolean("C010");
if (check01 == true) {
createSpinner("Subject C0001",spinner1);
layout.addView(spinner1);
}
if (check02 == true) {
createSpinner("Subject C0002",spinner2);
layout.addView(spinner2);
}
.....
if (check10 == true) {
createSpinner("Subject C0003",spinner3);
layout.addView(spinner3);
}
请指教如何让微调器垂直显示并居中显示。
另外,我如何检测创建了哪个微调器,以便我可以获得用户从微调器中选择的值。
要垂直显示,您需要将 LinearLayout
的方向设置为 vertical
。您可以在代码中这样做。
layout.setOrientation(LinearLayout.VERTICAL);
要使 Spinner
出现在中心位置,请将 layout
的引力设置为 CENTER_HORIZONTAL
。
LayoutParams layout_params = new LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT, Gravity.CENTER_HORIZONTAL);
layout.setLayoutParams(params);