一、初识Action Bar
1、定义:
翻译为操作栏,包括app图标,activity标题,选项菜单,向上按钮,TAB导航等等。
2、添加Action Bar
在现在Android Studio中,只要sdk版本大于11,则会默认添加。可以在AndroidManifest.xml中theme属性中选择noActionBar来不显示。
显示和隐藏Action Bar,API如下:
//获取Action Bar ActionBar actionBar = getSupportActionBar(); actionBar.show();//显示actionBar actionBar.hide();//隐藏actionBar
二、添加Action Item
1、定义
在选项栏中带有快捷方式的按钮,即包括菜单项和溢出菜单。
2、添加Action Item的方法
① 定义菜单资源文件
在res下新建menu目录,新建menu文件,写上代码如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/search" android:icon="@drawable/search" android:title="search" app:showAsAction="always"></item> <item android:id="@+id/bell" android:icon="@drawable/bell" android:title="bell" app:showAsAction="ifRoom"></item> <item android:id="@+id/settings" android:title="设 置" app:showAsAction="ifRoom"></item> <item android:id="@+id/about" android:title="关 于" app:showAsAction="never"></item> </menu>
其中,app:showAsAction属性表示是否显示在actionbar上
属性值:
always:始终显示在actionbar上
ifRoom:表示如果actionbar有空间则显示,如果没有空间则显示在溢出菜单
never:永远不显示
withText:显示图标并且显示文本
② 在onCreateOptionsMenu()方法中加载菜单资源文件
//重写方法 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater();//实例化对象 inflater.inflate(R.menu.menu,menu);//解析菜单资源文件 return super.onCreateOptionsMenu(menu); }
即可正常显示。
三、添加Action View
即在ActionBar中添加一些可视的组件。
实例在ActionBar中添加一个搜索框。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:andriod="http://schemas.android.com/tools"> <item android:id="@+id/search" android:title="搜索" app:showAsAction="always" app:actionViewClass="android.widget.SearchView" /> </menu>
app:actionViewClass="android.widget.SearchView" 属性可显示出ActionView中的搜索框并实现搜索功能。
在Java文件代码和上步操作一样。
也可在ActionBar中添加布局文件,在menu.xml中的<item>内添加app:actionLayout="",即可。
四、实现层级式导航
即返回上一次的Activity。
<!-- 为该Activity配置父Activity --> <activity android:name=".FriendsActivity" android:label="朋友圈"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity>