Android提供实现下拉框功能的非常实用的控件Spinner。
spinner控件需要向xml资源文件中添加spinner标签,如下:
<Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/textView1" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/spinner1" android:layout_alignParentLeft="true" android:layout_marginBottom="20dp" android:layout_marginLeft="16dp" android:textSize="20sp" android:text="所选城市" />
添加完资源控件后,在activity中,添加代码:
package com.example.android_spinner2; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends Activity { private Spinner spinner ; private ArrayAdapter adapter ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.spinner =(Spinner) this.findViewById(R.id.spinner1); //两种方式给下拉列表注册适配器 //1 :new 适配器对象(content对象,样式ID,数据集合) adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, getDataSource()); spinner.setAdapter(adapter); } public List<String> getDataSource(){ List<String> list = new ArrayList<String>() ; list.add("北京"); list.add("上海"); list.add("广州"); list.add("长沙"); return list ; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }在模拟其中运行,将得到spinner的显示效果:
从官方的API可知,官方提供另外一种为spiner注册适配器的方式。示例代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.spinner =(Spinner) this.findViewById(R.id.spinner1); //两种方式给下拉列表注册适配器 //1 :new 适配器对象(content对象,样式ID,数据集合) // adapter = new ArrayAdapter<String>(this, // android.R.layout.simple_spinner_dropdown_item, getDataSource()); //2 :.createFromResource(content对象,xml中数组id,样式ID) adapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.planets_array,android.R.layout.simple_spinner_dropdown_item ); spinner.setAdapter(adapter); }
需要注意的是,第二种方式需要在string资源文件中添加数组:
<string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> </string-array
运行项目,同样能得到想要的下拉框列表。
时间: 2024-10-11 16:04:58