【问题标题】:Create a spinner programmatically in Android在 Android 中以编程方式创建微调器
【发布时间】:2020-02-08 07:55:01
【问题描述】:

我想在不使用 XML 的情况下创建微调器。我是android新手,知识有限。现在我有了这段代码(见上文),我希望我的微调器在我的TabActivity 的一个选项卡中。 没有明显的错误,但是当我打开我的活动时,选项卡是空的。我将不胜感激。

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

}

【问题讨论】:

  • 你想要一个“标签上的微调器”是什么意思?你能举个例子来说明你想要得到什么吗?

标签: android spinner android-spinner


【解决方案1】:

您需要将Spinner 添加到布局中。

首先为Spinner 创建一个container,然后创建Spinner 并将其添加到您的container。接下来将你Activity的内容设置为你的container

这可以在您的 onCreate 方法中这样做:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

    LinearLayout layout = new LinearLayout(this);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

    layout.addView(spinner);

    setContentView(layout);
}

编辑:

澄清一下:如果 Spinner 没有添加到布局内 Activity 的内容中,它是不可见的,所以这就是为什么你不会收到任何错误或任何东西,因为没有你的代码本身没有任何错误;-)

【讨论】:

  • 我使用一个 TabActivity,我的活动布局有一个 TabHost。我只想在一个选项卡中使用微调器,这就是为什么我没有在 xml 中放置微调器。如何创建另一个布局(activity_my)来放置微调器并仅在此选项卡中使用它??
  • 要将微调器添加到特定片段,您需要将微调器添加到特定片段布局而不是活动的布局。如果这没有意义,请为此提出一个新问题。
【解决方案2】:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout layout = new LinearLayout(this);

        // The following can also be done using a loop
        ArrayList<String> spinnerArray = new ArrayList<String>();
        spinnerArray.add("one");
        spinnerArray.add("two");
        spinnerArray.add("three");
        spinnerArray.add("four");
        spinnerArray.add("five");


        Spinner spinner = new Spinner(MainActivity.this);
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
        spinner.setAdapter(spinnerArrayAdapter);
        layout.addView(spinner);
        setContentView(layout);
    }
    }

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多