【问题标题】:Android - Create spinner programatically display issueAndroid - 以编程方式创建微调器显示问题
【发布时间】:2017-03-04 23:09:39
【问题描述】:

基本上,我的程序提示用户从 MainActivity 的复选框中选择主题(从 10 个中最多选择 5 个)并将其 isChecked 布尔值发送到 NextActivity。收到每个真实值后,我需要为用户创建一个微调器,以便在 A-F 之间选择等级。

但是,问题是布局中的微调器显示为这样。

我创建了一个用于创建微调器的类

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

然后,从先前的活动中获取价值并检查其是否为真,用于创建微调器。

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

请告知如何让微调器垂直显示并放置在中心。

另外,我如何检测创建了哪个微调器,以便我可以获得用户从微调器中选择的值。

【问题讨论】:

    标签: android android-layout android-studio spinner


    【解决方案1】:

    要垂直显示,您需要将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);
    

    【讨论】:

    • 我有办法知道创建了哪个微调器吗?
    • @hatched 我没有得到这部分问题。你能再解释一下吗?
    • 程序只会在传递true 值时创建微调器。因此我不知道是否会创建哪些微调器以及创建多少个微调器。我如何检测创建了哪个微调器?
    • @hatched 您可以创建SpinnerList 并在createSpinner 函数中添加该微调器列表。
    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2015-09-23
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多