本文介绍的是Android常用控件Spinner的使用方法
下面是导读:
1.什么时Spinner
2.如何使用Spinner
3.总结
1.什么是Spinner?
Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。
下图是Android6.0系统的Spinner样式:
2.如何使用Spinner?
静态添加数据:
第一步:设计xml布局
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/languages"
/>
</LinearLayout>
布局中仅有一个Spinner控件
第二步:在res-values-string.xml文件里新添加数组资源如下
<string-array name="it">
<item>c语言</item>
<item>c++</item>
<item>Java</item>
<item>Python</item>
<item>PHP</item>
</string-array>
在resources标签内直接添加条目就可以。
第三步:在Activity类中添加内容
声明变量:
//下拉菜单
private Spinner spinner;
在onCreate()方法里添加以下内容
//初始化spinner对象
spinner= (Spinner) findViewById(R.id.spinner);
//设置适配器
/*参数1:context上下文
参数2:设置好的数据
参数3:系统默认Spinner初始布局(打开Activity显示的Spinner布局)
*/
final ArrayAdapter<CharSequence> spinneradapter=ArrayAdapter.createFromResource(
this,R.array.it,android.R.layout.simple_spinner_item
);
//设置展示的项布局(点击下拉按钮后展示的布局)
//此处使用的是系统默认布局 spinneradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//设置适配器
spinner.setAdapter(spinneradapter);
//设置监听器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String se=parent.getItemAtPosition(position).toString();
//获取用户选择
Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(LoginActivity.this,"未选择",Toast.LENGTH_SHORT).show();
}
});
动态添加数据:
首先动态添加数据的xml文件是和静态添加一样的,不同的是第二步内容如下:
在onCreate()方法里添加如下内容:
//首先获取spinner对象
spinner= (Spinner) findViewById(R.id.spinner);
//然后使用动态添加的方法来添加数据
List<String> list =new ArrayList<String>();
list.add("数据");
list.add("数据2");
//适配器还是默认的适配器,这边使用了一个布局文件,我们可以自定义这个布局,第一个参数是context,第二个是自定义布局(列表中每一个条目的样式),第三个是控件id,第四个是数据
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item,R.id.textView,list);
//关联适配器
spinner.setAdapter(spinneradapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String se=parent.getItemAtPosition(position).toString();
//获取用户选择
Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(LoginActivity.this,"未选择",Toast.LENGTH_SHORT).show();
}
});
3.总结
Spinner常被用在需要扩展选择的地方,样式也是可以自定义,根据自己的需要设置item布局,配置自己的适配器,从而达到自己想要的风格,不过一般是修改列表项的样式,至于Spinner收缩时的样式尽量不要修改,避免用户造成误会。
补充:Spinner的一些xml属性
android:spinnerMode=”dialog/dropdown” 设置下拉样式还是对话框样式
android:popupBackground=”图片地址” 设置下拉模式背景图片
更多属性请参考开发者文档。