Action Bar
Posted xuqp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Action Bar相关的知识,希望对你有一定的参考价值。
1.显示隐藏Action Bar
1.配置上
在application 上的
android:theme="@style/AppTheme"全局配置ActionBar
在某个activity上设置
android:theme="@style/Theme.AppCompat.NoActionBar"配置没有actionBar
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
2.代码中实现ActionBar的显示隐藏
public void onClick(View v) { ActionBar actionBar = getSupportActionBar(); //获取actionBar对象 switch (v.getId()){ case R.id.action_btn_show: actionBar.show(); //显示 break; case R.id.action_btn_hide: actionBar.hide(); //隐藏 break; default: break; } }
2.添加Action Item 的步骤
1.定义菜单资源文件
app:showAsAction:alwary:一直显示在栏上 ifRoom空间够显示在栏上,never显示在更多里面
<?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:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always"> </item> <item android:id="@+id/bell" android:icon="@drawable/bell" android:title="消息" app:showAsAction="ifRoom"> </item> <item android:id="@+id/setting" android:icon="@drawable/bell" android:title="设置" app:showAsAction="ifRoom"> </item> <item android:id="@+id/link" android:icon="@drawable/bell" android:title="关于" app:showAsAction="ifRoom"> </item> </menu>
2.在onCreateOptionsMenu()方法中加载菜单资源文件
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); //实例化MenuInflater inflater.inflate(R.menu.menu,menu); return super.onCreateOptionsMenu(menu); }
3.添加Action View 的步骤
1.定义菜单资源文件
app:showAsAction:alwary:一直显示在栏上 ifRoom空间够显示在栏上,never显示在更多里面
//使用 app:actionViewClass通过实现类
<item android:id="@+id/search"
android:icon="@drawable/search"
android:title="search"
app:actionViewClass="android.support.v7.widget.SearchView" //使用实现类
app:showAsAction="always">
</item>
//使用 app:actionLayout 属性 通过布局文件
<item android:id="@+id/man"
android:title="关于"
app:actionLayout="@layout/image_add" //使用布局文件
app:showAsAction="always">
</item>
2.在onCreateOptionsMenu()方法中加载菜单资源文件(同上)
4.ActionBar实现tab导航
1.设置使用Tab导航方式
public void initTabBar(){ //获取actionBar ActionBar actionBar = getSupportActionBar(); //设置不显示标题 actionBar.setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE); //设置模式是tab actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //actionBar.addTab(actionBar.newTab().setText("词典")); actionBar.addTab(actionBar.newTab() .setText("词典").setTabListener(new MyTabListener(this,AddFragment.class))); }
2.添加多个Tab标签页,并为每个Tab标签页添加事件监听
/* 实现各标签页的切换 */ public class MyTabListener implements TabListener { private final Activity activity;//用于指定要加载的Fragment的activity private final Class aClass; //用于指定Fragment要加载的类 private Fragment fragment; public MyTabListener(Activity activity, Class aClass) { this.activity = activity; this.aClass = aClass; } //被选择标签页的事件 @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { //判断fragment是否初始化 if(fragment ==null){ //反射方式实现初始化,参数:上下文对象,类名 fragment = Fragment.instantiate(activity,aClass.getName()); //将fragment进行添加 ft.add(android.R.id.content,fragment,null); } ft.attach(fragment); //将添加进 } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { //判断fragment是否初始化 if(fragment !=null){ ft.detach(fragment); //删掉 } } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { } }
以上是关于Action Bar的主要内容,如果未能解决你的问题,请参考以下文章
此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)