Android 控件之Spinner

Spinner是一个单选项的控件,用于显示列表。它从适配器获取数据,并可通过setPrompt设置提示,通过setOnItemSelectedListener监听选择事件。本文提供了一个完整的SpinnerDemo示例,演示了如何创建和配置Spinner。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spinner用来显示列表项,类似于一组单选框RadioButton.

  源码下载

  一、概述

  Spinner是一个每次只能选择所有项的一个项的控件。它的项来自于与之相关联的适配器中。

  二、重要属性

  android:prompt:当Spinner对话框关闭时显示该提示

  三、重要方法

  setPrompt(CharSequence prompt):设置当Spinner对话框关闭时显示的提示

  performClick():如果它被定义就调用此视图的OnClickListener

  setOnItemClickListener(AdapterView.OnItemClickListener l):当项被点击时调用

  onDetachedFromWindow():当Spinner脱离窗口时被调用。

  四、完整代码

  public class SpinnerDemo extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.spinnerpage);

  Spinner s1 = (Spinner) findViewById(R.id.spinnercolor);

  ArrayAdapter adapter = ArrayAdapter.createFromResource(

  this, R.array.colors, android.R.layout.simple_spinner_item);

  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

  s1.setAdapter(adapter);

  s1.setOnItemSelectedListener(

  new OnItemSelectedListener() {

  public void onItemSelected(

  AdapterView parent, View view, int position, long id) {

  showToast("Spinner1: position=" + position + " id=" + id);

  }

  public void onNothingSelected(AdapterView parent) {

       showToast("Spinner1: unselected");

  }

  });

  Spinner s2 = (Spinner) findViewById(R.id.spinnerplanet);

  adapter = ArrayAdapter.createFromResource(this, R.array.planets,

  android.R.layout.simple_spinner_item);

  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

  s2.setAdapter(adapter);

  s2.setOnItemSelectedListener(

  new OnItemSelectedListener() {

  public void onItemSelected(

  AdapterView parent, View view, int position, long id) {

  showToast("Spinner2: position=" + position+1 + " id=" + id+1);

  }

  public void onNothingSelected(AdapterView parent) {

  showToast("Spinner2: unselected");

  }

  });

  }

  private void showToast(CharSequence msg) {

  Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();

  }

  }

 

 

android中spinner初始化后的默认项如何设置 :setSelection方法

 

修改字体需要自定义adapter:
Java code
    
    
private class MyArrayAdapter < String > extends ArrayAdapter < String > { public MyArrayAdapter(Context context, String[] resourceId, int textViewResourceId) { super (context, textViewResourceId, resourceId); } public TextView getView( int position, View convertView, ViewGroup parent) { TextView v = (TextView) super .getView(position, convertView, parent); Typeface tf = Typeface.createFromAsset(getAssets(), " fonts/samplefont.ttf " ); v.setTypeface(tf); v.setTextSize( 30 ); return v; } public TextView getDropDownView( int position, View convertView, ViewGroup parent) { TextView v = (TextView) super .getView(position, convertView, parent); Typeface tf = Typeface.createFromAsset(getAssets(), " fonts/samplefont.ttf " ); v.setTypeface(tf); v.setTextSize( 30 ); return v; } }
 有的时候你需要修改Adapter.  如果你的Adapter是通过对象数组构造的,那会有问题,因为系统会把你的对象数组

转换成  长度不可变  的list. 当你在Adapter 里add insert时候,这个不可变数组就会发生异常.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值