Day11 ActionBar
- ActionBar 概述
- Java代码
- XML属性
- 自定义ActionView
- Tab
- 零散知识点
概述
在Android3.0之后引入的ActionBar,用于取代3.0之前的标题栏。
不需要导入ActionBar,因为在android3.0或者以上版本中,ActionBar已经默认的包含在Activity中
在Android3.0的默认主题“holographic”中,已经创造了ActionBar
当android:minSdkVersion 或者 android:targetSdkVersion 属性被设置成11或者更高时,应用会被认为是Android3.0版本(默认含有ActionBar)
相关Java代码
//获取当前activity的ActionBar
ActionBar actionBar = getActionBar();
//设置ActionBar显示、隐藏
actionBar.show();
actionBar.hide();
//判断actionBar状态
actionBar.isShowing();
//设置窗口小图标可以被点击(一般会在第二页面时启用HomeButton)
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
XML属性
通过对Menu内容的配置改变actionBar的显示模式
menu项
android:showAsAction
- always
: 总是显示该ActionView
- never
: 从不显示
- ifRoom
: 当空间充足时显示
- withText
:带有文字的ActionView,当空间充足时显示title属性定义的值。
android:icon
属性:设置项的图标
android:title
属性:设置项的文字
配置文件
设置ActionBar分割
设置当屏幕宽度的空间不足时,将ActionBar从标题栏中分隔出来
android:uiOptions
- splitActionBarWhenNarrow"
自定义ActionView
自定义ActionView是在菜单项XML文件中为其指定控件布局
android:actionViewClass
设置ActionView控件的UI类
- 值为UI类完整名称(包名+类名)
android:actionLayout
属性设置自定义ActionView的布局文件
- 布局文件id
<item
android:id="@+id/action_search"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView"
android:title="检索"/>
<!-- actionLayout 属性设置自定义ActionView的布局文件 -->
<item
android:id="@+id/action_search_custom"
android:orderInCategory="100"
android:showAsAction="always|collapseActionView"
android:actionLayout="@layout/actionview_search"
android:icon="@android:drawable/ic_menu_agenda"
android:title="自定义检索"/>
如何获取Menu中的ActionView?
//从Menu中查找SearchView所在的MenuItem
MenuItem mItem=menu.findItem(R.id.action_search);
//从MenuItem中获取ActionView,并强转为SearchView
SearchView searchView=(SearchView) mItem.getActionView();
TAB
DSAD
- 使用ActionBar的Tab导航
- 设置ActionBar的导航的模式为TABS
- 当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件
- 通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
- 通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
- 在Tab选择事件方法中,动态地显示Fragment
// 初始化ActionBar中的相关设置
actionBar=getActionBar();//获取ActionBar对象
//1. 设置ActionBar的导航模式: tab选项卡的导航模式
//非常重要,不设置会不显示
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//3. 创建Tab
Tab tab1=actionBar.newTab()
.setText("头条")
.setIcon(android.R.drawable.ic_menu_add)
.setTabListener(this);
//4.实现TabListener的方法
//FragmentTransaction ft传递了FragMent事务,可直接使用
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}