下拉菜单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