ActionBar 使用
1、显示和隐藏ActionBar
actionbar:应用标题所在的区域
- 一个专门的空间用来显示app标识,以及指出目前所处在app的哪个页面;
- 以一种可预见的方式访问重要的操作(比如搜索);
- 支持导航和视图切换(通过Tabs和下拉列表);
显示和隐藏
- xml方法:就是在manifest 里面设置application或者 activity 的theme属性就可以实现显示和隐藏(带NoActionBar的主题)
- java方法:首先getSupportActionBar 获得bar,然后调用hide 或者 show 方法即可
2、添加Action Item
- 和前面创建选项菜单基本是一样的步骤,就是先定义菜单资源然后通过 inflater 进行填充
- 只是定义菜单的 item的时候多了一个 showAsAction的属性,具体的属性值参考如下
- 菜单资源文件 item 示例
<item
android:id="@+id/search"
android:icon="@drawable/search"
android:title="@string/search"
app:showAsAction="always">
</item>
3、添加Action View
- 就是往 ActionBar 上面添加组件
- 菜单资源文件示例如下:具体的view既可以通过类进行指定,也可以通过布局文件指定
<item
android:id="@+id/search"
android:title="@string/search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always"
></item>
<item
android:id="@+id/img1"
android:title="@string/img1"
app:actionLayout="@layout/img_message"
app:showAsAction="always"></item>
说明
- actionLayout、showAsAction等的前缀都是 app 而不是 android,需要引入相应的名称空间
- action bar 的 setDisplayShowTitleEnabled 方法可以设置应用标题的隐藏和显示
- getMenuInflater
4、ActionBar & tab
只有 tab 导航的action bar的实现
- 步骤:建几个 fragment -->实现 tabListener -->MainActivity中添加tab到action bar
- 关键代码
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
if(fragment == null){
fragment = Fragment.instantiate(activity,clazz.getName());
fragmentTransaction.add(android.R.id.content,fragment,null);
}
fragmentTransaction.attach(fragment);
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
if(fragment != null){
fragmentTransaction.detach(fragment);
}
}
ActionBar ab = getSupportActionBar();
ab.setDisplayShowTitleEnabled(false);
ab.setNavigationMode(ab.NAVIGATION_MODE_TABS);
ab.addTab(ab.newTab().setText("第一页").
setTabListener(new MyListener(AFragment.class,MainActivity.this)));
ab.addTab(ab.newTab().setText("第二页").
setTabListener(new MyListener