下拉菜单Spinner 用法,效果图:
布局xml 代码:
1 2 3 4 5 6 7 | <Spinner android:id = "@+id/sp1" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = " 下拉菜单 " android:drawSelectorOnTop = "true" android:prompt = "@string/planet_prompt" /> |
上面的prompt 属性就是点击后跳出的选择框的标题栏上的文字,本来想直接打上字符串,但是提示出错,而把字符串放进string.xml 就没问题,不知什么原因。
string.xml:
1 | <string name = "planet_prompt" > Choose a planet</string> |
最后是程序代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package com.pocketdigi ;
import java.util.List ;
import android.app.Activity ; import android.os.Bundle ; import android.view.View ; import android.widget.AdapterView ; import android.widget.ArrayAdapter ; import android.widget.Spinner ; import android.widget.Toast ; import android.widget.AdapterView.OnItemSelectedListener ;
public class main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate( Bundle savedInstanceState) { super .onCreate ( savedInstanceState) ; setContentView( R.layout .main ) ; SpDemo() ; } Spinner sp1; ArrayAdapter< String> adapter; List< String> allnum; private static String [] arr= { "1" ,"2" ,"3" } ; // 定义一组选项 private static String [] Value= { " 我是 1" ," 我是 2" ," 我是 3" } ; // 定义选中后得到的值 private void SpDemo() { // 下面开始插入数据 sp1= ( Spinner) findViewById( R.id .sp1 ) ; adapter= new ArrayAdapter< String> ( this ,android.R .layout .simple_spinner_item ,arr) ; // 将可选内容与 ArrayAdapter 连接 adapter.setDropDownViewResource ( android.R .layout .simple_spinner_dropdown_item ) ; // 设置下拉列表的风格 sp1.setAdapter ( adapter) ; // 将 adapter 添加到 Spinner 中 // 插入数据结束 // 下面开始获取选中的值 sp1.setSelection ( 2 ) ; sp1.setOnItemSelectedListener ( new OnItemSelectedListener(){ @Override
public void onItemSelected( AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText ( main.this , Value[ arg2] ,10 ) .show () ;
}
@Override public void onNothingSelected( AdapterView<?> arg0) { // TODO Auto-generated method stub Toast.makeText ( main.this , " 没选中 " ,10 ) .show () ; }
}) ; } } |
上面代码中,插入数据那段,还可以用以下方法:
方法一,直接在程序中add
1 2 3 4 5 6 7 | sp1= ( Spinner) findViewById( R.id .sp1 ) ; adapter= new ArrayAdapter< String> ( this ,android.R .layout .simple_spinner_item ) ; adapter.setDropDownViewResource ( android.R .layout .simple_spinner_dropdown_item ) ; adapter.add ( "1" ) ; adapter.add ( "2" ) ; adapter.add ( "3" ) ; sp1.setAdapter ( adapter) ; |
方法二,把数据放入xml 文件中
在res/layout 目录下建立新的XML 文件,文件名为Spinner.xml, 内容如下:
1 2 3 4 5 6 7 8 9 | <?xml version = "1.0" encoding = "utf-8" ?> <resources>
<string-array name = "num" > <item> 1</item> <item> 2</item> <item> 3</item> </string-array> </resources> |
主程序加入数据那段代码改为下面的代码:
1 2 3 4 | sp1= ( Spinner) findViewById( R.id .sp1 ) ; ArrayAdapter< CharSequence> Ad= ArrayAdapter.createFromResource ( this , R.array .num ,android.R .layout .simple_spinner_item ) ; Ad.setDropDownViewResource ( android.R .layout .simple_spinner_dropdown_item ) ; sp1.setAdapter ( Ad) ; |
注意:这段用的是ArrayAdapter<CharSequence> ,上面两种用的是ArrayAdapter<String> ,所以重新定义ArrayAdapter