自定义Spinner下拉菜单(下拉列表框)式样

自定义Spinner下拉菜单(下拉列表框)样式

在Android中Spinner就是下拉菜单,它相当于HTML中的<select>标签。

在Android中Spinner就是下拉菜单,它相当于HTML中的<select>标签。
Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用,
不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。
l Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值

l  调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入

在layout目录下新建一个xml文件,名字随便(我这里叫myspinner.xml)。在这个文件里面可以定义下拉菜单的样式
我们这里采用TextView来实现

1
<?xml version="1.0" encoding="utf-8"?>
2
<TextView
3
xmlns:android="http://schemas.android.com/apk/res/android"
4
android:id="@+id/text1"
5
android:layout_width="wrap_content"
6
android:layout_height="24sp"
7
android:singleLine="true"
8
style="?android:attr/spinnerDropDownItemStyle" />
在Activity中我们可以这样调用

1
private static final String[] countriesStr={"","","",""}
2
mySpinner = (Spinner) findViewById(R.id.mySpinner);
3
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countriesStr);
4
adapter.setDropDownViewResource(R.layout.myspinner_dropdown);
5
mySpinner.setAdapter(adapter);
利用自定义的xml我们就可以很灵活的来改变下拉菜单的样式。

另外andorid也提供了两种基本的样式
android.R.layout.simple_spinner_item:TextView的下拉菜单
android.R.layout.simple_spinner_dropdown_item:右边带有radio的下拉菜单

例子2:

主界面设计:
01
<?xml version="1.0" encoding="utf-8"?>
02

03
<LinearLayout
04

05
  xmlns:android="http://schemas.android.com/apk/res/android"
06

07
  android:layout_width="fill_parent"
08

09
  android:layout_height="wrap_content">
10

11

12
<Spinner android:id="@+id/spinner"
13

14

15
android:layout_height="wrap_content"
16

17
    android:layout_width="fill_parent"/>
18

19
</LinearLayout>


下拉列表框每一项的界面样式:stylespinner.xml
01
<?xml version="1.0" encoding="utf-8"?>
02

03
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
04

05
   android:id="@+id/contentTextView"
06

07
    android:layout_width="fill_parent"
08

09
    android:layout_height="wrap_content"
10

11
    android:background="#F4FDFF"
12

13
    />

代码处理:



01
public class MainActivity extends Activity {
02
/** Called when the activity is first created. */
03
private static final String TAG = "SpinnerActivity";
04
/*
05
* Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值
06
调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,
07
把AdapterView.OnItemSelectedListener实例作为参数传入
08
* */
09

10
@Override
11
public void onCreate(Bundle savedInstanceState) {
12
super.onCreate(savedInstanceState);
13
setContentView(R.layout.main);
14
// 第二个参数为layout文件在R文件的id,第三个参数为TextView在layout文件的id
15
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
16
R.layout.stylespinner, R.id.contentTextView);
17
adapter.add("刷新");
18
adapter.add("退出");
19
adapter.add("关于");
20
Spinner spinner = (Spinner) findViewById(R.id.spinner);
21

22
spinner.setAdapter(adapter);
23
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
24

25
@Override
26
public void onItemSelected(AdapterView<?> adapterView, View view,
27
int position, long id) {
28

29
Spinner spinner = (Spinner) adapterView;
30

31
String itemContent = (String) adapterView
32
.getItemAtPosition(position);
33

34
}
35

36
@Override
37
public void onNothingSelected(AdapterView<?> view) {
38

39
Log.i(TAG, view.getClass().getName());
40

41
}
42
});
43

44
}}