Android3.0 ActionBar導(dǎo)航標(biāo)題欄使用解析
先看圖:
[1]是ActionBar的圖標(biāo),[2]是兩個(gè)action按鈕,[3]是overflow按鈕。
介紹:
Action Bar是一種新増的導(dǎo)航欄功能,在Android 3.0之后加入到系統(tǒng)的API當(dāng)中,它標(biāo)識(shí)了用戶當(dāng)前操作界面的位置,并提供了額外的用戶動(dòng)作、界面導(dǎo)航等功能。使用ActionBar的好處是,它可以給提供一種全局統(tǒng)一的UI界面,使得用戶在使用任何一款軟件時(shí)都懂得該如何操作,并且ActionBar還可以自動(dòng)適應(yīng)各種不同大小的屏幕。
添加ActionBar
1、不需要導(dǎo)入ActionBar,因?yàn)樵赼ndroid3.0或者以上版本中,ActionBar已經(jīng)默認(rèn)的包含在Activity中
2、在Android3.0的默認(rèn)主題“holographic”中,已經(jīng)創(chuàng)造了ActionBar
3、當(dāng)android:minSdkVersion 或者 android:targetSdkVersion 屬性被設(shè)置成11或者更高時(shí),應(yīng)用會(huì)被認(rèn)為是Android3.0版本(默認(rèn)含有ActionBar)
二、隱藏ActionBar
1、我們可以通過(guò)把主題設(shè)置為Theme.Holo.NoActionBar為一個(gè)Activity去除掉ActionBar
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
2、我們也可以通過(guò)在代碼中調(diào)用show()或者h(yuǎn)ide()方法來(lái)相應(yīng)的顯示或者隱藏ActionBar
3、在我們使用actionBar.hide();方法是系統(tǒng)默認(rèn)會(huì)將ActionBar占用的空間分配給界面,此時(shí)顯示的界面將會(huì)重新繪制。
同樣調(diào)用actionBar.show();時(shí)也會(huì)重新繪制界面。如果我們一個(gè)程序需要頻繁的顯示或者隱藏ActionBar的話,這樣
就不會(huì)有良好的效果。Google提供給一個(gè)屬性可以讓ActionBar浮在界面上,當(dāng)然你可以讓ActionBar的背景為透明,
這樣會(huì)有良好的體驗(yàn)效果。
Demo栗子:
清單文件中設(shè)置theme
<application android:name=".view.MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
style/AppTheme
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
MainActivity中初始化
/** * 初始化標(biāo)題 */ private void initActionbar() { ActionBar actionBar= getSupportActionBar();//獲取當(dāng)前頁(yè)面的標(biāo)題欄 actionBar.setTitle("Demo應(yīng)用");//設(shè)置顯示標(biāo)題 actionBar.setLogo(R.mipmap.ic_launcher);//設(shè)置logo標(biāo)志 actionBar.setDisplayShowHomeEnabled(true);//是否顯示在主頁(yè)面上 actionBar.setDisplayUseLogoEnabled(true);//是否使用標(biāo)志圖片 actionBar.setDisplayHomeAsUpEnabled(true);//返回鍵 actionBar.show();//設(shè)置后調(diào)用show顯示標(biāo)題欄 }
菜單中加載布局
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.action_bar_menu,menu); return true; }
menu.action_bar_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"> <!--menu集合添加多個(gè)按鈕 showAsAction 顯示設(shè)置 always 爭(zhēng)取顯示 ifRoom根據(jù)剩余空間的大小來(lái)決定 ,大 就顯示 ,反之 不顯示 never 默認(rèn)從來(lái)不顯示在集合外面 app:showAsAction="always"--> <item android:id="@+id/menu1" android:title="菜單1" android:icon="@drawable/action_download"/> <item android:id="@+id/menu2" android:title="菜單2" android:icon="@drawable/ic_feedback"/> <item android:id="@+id/menu3" android:title="菜單3" app:showAsAction="never" android:icon="@drawable/ic_exit"/> </menu>
提供處理標(biāo)題元素的事件方法
/** *這是Activity提供處理標(biāo)題元素的事件方法,返回true消費(fèi)事件 *關(guān)鍵點(diǎn):android.R.id.home 是系統(tǒng)分配置的返回的id */ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case android.R.id.home: //這個(gè)id是固定的,系統(tǒng)分配的 if(mDrawerLayout.isDrawerOpen(mMenuLayout)){ //如果是打開(kāi)狀態(tài),那么點(diǎn)擊就關(guān)閉 mDrawerLayout.closeDrawer(mMenuLayout); }else{ //如果是關(guān)閉狀態(tài),那么點(diǎn)擊就打開(kāi) mDrawerLayout.openDrawer(mMenuLayout); } break; case R.id.menu1: Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show(); break; case R.id.menu2: Toast.makeText(MyApp.getContext(), item.getTitle(), Toast.LENGTH_SHORT).show(); break; case R.id.menu3: UiUtils.showToast(item.getTitle().toString()); break; } return super.onOptionsItemSelected(item); }
/** * 設(shè)置箭頭打開(kāi)動(dòng)畫(huà) */ private void initRotateArrowAnimation() { //參數(shù)1:Activity 參數(shù)2:抽屜控件 參數(shù)3,4:string ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close); //同步狀態(tài) 作用:把返回圖標(biāo)替換 2,把旋轉(zhuǎn)特效箭頭跟抽屜關(guān)聯(lián) toggle.syncState(); //抽屜滑動(dòng)的距離換成角度,使用箭頭旋轉(zhuǎn) mDrawerLayout.addDrawerListener(toggle); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flutter彈性布局Flex水平排列Row垂直排列Column使用示例
這篇文章主要為大家介紹了Flutter彈性布局Flex水平排列Row垂直排列Column使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Android入門之使用RecyclerView完美實(shí)現(xiàn)瀑布流界面詳解
網(wǎng)上充滿著不完善的基于RecyclerView的瀑布流實(shí)現(xiàn),要么根本是錯(cuò)的、要么就是只知其一不知其二。本文就來(lái)用RecyclerView完美實(shí)現(xiàn)瀑布流界面,希望大家有所幫助2023-02-02Android自定義View實(shí)現(xiàn)隨機(jī)數(shù)驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Android如何利用自定義View實(shí)現(xiàn)隨機(jī)數(shù)驗(yàn)證碼效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-06-06Kotlin開(kāi)發(fā)實(shí)戰(zhàn)之hello world
這篇文章主要為大家詳細(xì)介紹了Kotlin開(kāi)發(fā)實(shí)戰(zhàn)之hello world的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Android上實(shí)現(xiàn)easyconfig(airkiss)方法
本篇文章主要給大家講解了在Android系統(tǒng)上實(shí)現(xiàn)easyconfig(airkiss)的方法,有這方面需要的朋友參考學(xué)習(xí)下吧。2018-01-01Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11基于Android 實(shí)現(xiàn)圖片平移、縮放、旋轉(zhuǎn)同時(shí)進(jìn)行
這篇文章主要介紹了基于Android 實(shí)現(xiàn)圖片平移、縮放、旋轉(zhuǎn)同時(shí)進(jìn)行的相關(guān)資料,需要的朋友可以參考下2015-11-11