1、从一个Spinner例子来分析
1、布局XML文件
只有一个简单的TextView和Spinner。
2、源码
public class MainActivity extends Activity {
private Spinner spinner;
private TextView mtext;
private ArrayAdapter<CharSequence> adapter;
private static final String[] city = {"北京","上海","广州","深圳"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mtext = (TextView) findViewById(R.id.textView);
spinner=(Spinner)this.findViewById(R.id.spinner);
//将内容与ArrayAdapter连接起来 。R.layout.spinnerlayout为自定义形式。
adapter=ArrayAdapter.createFromResource(this,R.array.cities,R.layout.spinnerlayout);
//设置下拉列表的风格
adapter.setDropDownViewResource(R.layout.spinnerlayout);
//将adapter 添加到spinner中
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new SpinnerXMLSelectedListener());
}
//spinner 监听事件
class SpinnerXMLSelectedListener implements OnItemSelectedListener{
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
long arg3) {
mtext.setText("居住地为:"+adapter.getItem(position));
}
public void onNothingSelected(AdapterView<?> arg0) {
}
}
3、资源内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name = "app_name">Spinner</string>
<string name = "action_settings"> settings</string>
<string name = "spin_prompt"> 请选择城市</string>
<string-array name = "cities">
<item>北京</item>
<item>上海</item>
<item>广州</item>
<item>深圳</item>
</string-array>
</resources>
4、自定义的Spinner显示样式和下拉UI样式(共用一个)
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textColor="#FF8B1500"
android:gravity="center" />
2、代码分析
1、使用数组填充Spinner数据:
如果使用数组填充的话,原文中:
adapter=ArrayAdapter.createFromResource(this,R.array.cities,R.layout.spinnerlayout);
替换为:
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,city);
R.layout.simple_spinner_item是安卓系统自带的spinner样式。
类似的,adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
中simple_spinner_dropdown_item是android系统自带下拉的样式。
2、Spinner 用法和几个特殊属性
1、获取Spinner选中文本
mySpinner.getSelectedItem().toString()或者通过对应的adapter的getItem(position)方法获取
2、特殊属性
spinnerMode=dropdown时,为下拉模式,默认为此模式。
spinnerMode=dialog时,会在界面中间弹出 。
android:prompt=”@string/XXX” 。该属性定义弹出框的标题,只有在spinnerMode=dialog时才起作用。
android:popupBackground=”#f0000000”,可以去除spinner的默认黑边
android:dropDownVerticalOffset和android:dropDownHorizontalOffset都是改变下拉框位置的。