ActionBar下拉选项卡
一、ActionBar简介
ActionBar(活动栏)替代了显示在屏幕顶端的标题栏,主要负责显示菜单,widget,导航等功能。
ActionBar主要由四个部分组成:
AppIcon(应用标识、向主界面导航)、ViewControl(视图切换,或者显示一些描述信息)、ActionButtons(显示应用程序中最重要的动作、长按图标会提示该动作的描述)、ActionOverflow(相对不太常用的动作)
不过我们要学习的是第二种下拉式的actionbar,使用Spinners:为同一中数据类型集合的页面提供导航。
二、Actionbar的使用步骤:
在ActionBar中添加下拉菜单,主要有一下几个关键步骤:
1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项
2. 实现ActionBar.OnNavigationListener接口,当点击ActionBar的菜单项是进行相应的操作
3. 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行
4. 调用setListNavigationCallbacks()方法为ActionBar添加适配器和监听器.
三、代码实现:
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
|
public
class
MainActivity
extends
Activity {
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SpinnerAdapter adapter = ArrayAdapter.createFromResource(
this
,
R.array.Date, android.R.layout.simple_spinner_dropdown_item);
// 得到Actionbar
ActionBar actionbar = getActionBar();
// 隐藏actionbar
// actionbar.hide();
// 设置setNavigationMode()方法将actionbar以列表形式显示出来
// 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST
actionbar.setNavigationMode(actionbar.NAVIGATION_MODE_LIST);
// 调用setListNavigationCallbacks()方法为ActionBar添加适配器和监听器.
actionbar.setListNavigationCallbacks(adapter,
new
DropDownListenser());
}
class
DropDownListenser
implements
OnNavigationListener {
String[] listNames = getResources().getStringArray(R.array.Date);
public
boolean
onNavigationItemSelected(
int
itemPosition,
long
itemId) {
switch
(itemPosition) {
case
0
:
Toast.makeText(getApplicationContext(),
"2013-2014学年第一学期"
,
Toast.LENGTH_SHORT).show();
break
;
case
1
:
Toast.makeText(getApplicationContext(),
"2013-2014学年第二学期"
,
Toast.LENGTH_SHORT).show();
break
;
case
2
:
Toast.makeText(getApplicationContext(),
"2013-2014学年"
,
Toast.LENGTH_SHORT).show();
break
;
case
3
:
Toast.makeText(getApplicationContext(),
"2014-2015学年第一学期"
,
Toast.LENGTH_SHORT).show();
break
;
case
4
:
Toast.makeText(getApplicationContext(),
"2014-2015学年第二学期"
,
Toast.LENGTH_SHORT).show();
break
;
case
5
:
Toast.makeText(getApplicationContext(),
"2014-2015学年"
,
Toast.LENGTH_SHORT).show();
break
;
default
:
break
;
}
return
true
;
}
}
}
|
在String文件中加入如下代码
1
2
3
4
5
6
7
8
|
<
string-array
name
=
"Date"
>
<
item
>2013-2014学年第一学期</
item
>
<
item
>2013-2014学年第二学期</
item
>
<
item
>2013-2014学年</
item
>
<
item
>2014-2015学年第一学期</
item
>
<
item
>2014-2015学年第二学期</
item
>
<
item
>2014-2015学年</
item
>
</
string-array
>
|