自定义Spinner下拉菜单(下拉列表框)样式
Posted Android Rookie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义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
以上是关于自定义Spinner下拉菜单(下拉列表框)样式的主要内容,如果未能解决你的问题,请参考以下文章
下拉列表框Spinner-采用javabean作为Adapter元素
android studio 的下拉菜单Spinner使用详解