Android Toolbar的簡單使用

本篇文章僅為個人學(xué)習(xí)記錄跪解;

Toolbar是android.support.v7包中的卑雁,所以需要導(dǎo)入appcompat-v7包码邻;
在使用Toolbar時兽肤,需要隱藏掉原來的ActionBar套腹,直接在主題中修改:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">   </style>
或者
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

1、創(chuàng)建布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.sl.mydemo.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorAccent"      //背景
      />
</LinearLayout>

2资铡、設(shè)置屬性

        mToolbar = findViewById(R.id.toolbar);
        mToolbar.setTitle("測試標(biāo)題");                 //設(shè)置標(biāo)題  布局app:title
        mToolbar.setSubtitle("測試子標(biāo)題");            //設(shè)置子標(biāo)題  布局 app:subTitle
        mToolbar.setLogo(R.mipmap.ic_launcher);         //設(shè)置圖標(biāo)  布局 app:logo
        //設(shè)置標(biāo)題和子標(biāo)題顏色
        mToolbar.setTitleTextColor(Color.parseColor("#FFFFFF"));      //設(shè)置標(biāo)題顏色  布局 app:titleTextColor
        mToolbar.setSubtitleTextColor(Color.parseColor("#FFFFFF"));    //設(shè)置子標(biāo)題顏色  布局 app:subTitleTextColor
       //修改主標(biāo)題的外觀电禀、顏色
        mToolbar.setTitleTextAppearance(this,R.style.Theme_Toolbar_Base_Title);  // 布局:app:titleTextAppearance
         mToolbar.setPopupTheme(R.style.PopupMenu);          //溢出菜單彈窗設(shè)置  布局 app:popupTheme
      mToolbar.setSubtitleTextAppearance(this,R.style.Theme_Toolbar_Base_Title);  //布局:app:subTitleTextAppearance
        //設(shè)置導(dǎo)航圖標(biāo)要在setSupportActionBar后
        setSupportActionBar(mToolbar);
        mToolbar.setNavigationIcon(android.R.drawable.ic_menu_myplaces);       //設(shè)置導(dǎo)航圖標(biāo)
//        getSupportActionBar().setDisplayHomeAsUpEnabled(true) ;                 //左側(cè)按鈕

3、使用到的樣式

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:textColorSecondary">#FFFFFF</item>      <!--菜單右上角更多圖標(biāo)的顏色-->

    </style>

    <!--Toolbar 標(biāo)題字體大小顏色-->
    <style name="Theme.Toolbar.Base.Title" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="android:textSize">20dp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>
    <!--Toolbar 標(biāo)題字體大小顏色-->
    <style name="Theme.Toolbar.Base.SubTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="android:textSize">14dp</item>
        <item name="android:textColor">#FFFFFF</item>
    </style>

    <!--溢出菜單顏色笤休、背景尖飞、顯示位置-->
    <style name="PopupMenu" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:colorBackground">@color/colorAccent</item>
        <item name="android:textColor">#FFFFFF</item>
        <item name="overlapAnchor">false</item>
    </style>

4、添加菜單
定義res/menu/menu.main.xml文件

<?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:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item android:id="@+id/action_search"
        android:title="搜索"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom"/>
    <item android:id="@+id/action_notifications"
        android:title="通知"
        android:icon="@android:drawable/ic_notification_overlay"
        app:showAsAction="ifRoom"/>
    <item android:id="@+id/action_setting"
        android:title="設(shè)置"
        android:icon="@android:drawable/ic_menu_more"
        app:showAsAction="never"/>
    <!--app:showAsAction="if/never",app是自定義命名空間店雅,因為Actiivyt是繼承AppCompatActivity政基,是support
    v7包中的,不是原生的闹啦,所以不能使用android:showAction否則會報錯沮明。ifRoom表示有空間則顯示,never表
    示從不顯示窍奋,而是會通過overFlowwindow顯示-->
</menu>

將menu布局添加到toolbar中:

//重寫此方法荐健,將菜單加載進(jìn)ToolBar酱畅,如果沒有Toolbar,菜單是加載不出來滴
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main,menu);
        return true;
    }

5、點擊事件
左側(cè)按鈕點擊事件

設(shè)置導(dǎo)航圖標(biāo):mToolbar.setNavigationIcon(android.R.drawable.ic_menu_myplaces);       
原生顯示左側(cè)返回按鈕圖標(biāo):getSupportActionBar().setDisplayHomeAsUpEnabled(true) ;   
點擊事件江场,在setSupportActionBar(mToolBar)后:
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home:
                Snackbar.make(mToolbar,"左側(cè)按鈕",Snackbar.LENGTH_SHORT).show();
                break;
        }
        return true;
    }

菜單點擊事件:

 //為菜單添加點擊事件,需要在setSupportActionBar之后
        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.action_search:
                        Snackbar.make(mToolbar,"搜索",Snackbar.LENGTH_SHORT).show();
                        break;
                    case R.id.action_notifications:
                        Snackbar.make(mToolbar,"通知",Snackbar.LENGTH_SHORT).show();
                        break;
                    case R.id.action_setting:
                        Snackbar.make(mToolbar,"設(shè)置",Snackbar.LENGTH_SHORT).show();
                        break;
                }
                return true;       //返回true消費事件
            }
        });

6纺酸、toolbar中直接布局標(biāo)題等信息,只當(dāng)簡單控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.sl.mydemo.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:background="@color/colorAccent"
      >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="標(biāo)題"
            android:textSize="18dp"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="15dp"
            android:text="右側(cè)按鈕"
            />
    </android.support.v7.widget.Toolbar>
</LinearLayout>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市址否,隨后出現(xiàn)的幾起案子吁峻,更是在濱河造成了極大的恐慌,老刑警劉巖在张,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件用含,死亡現(xiàn)場離奇詭異,居然都是意外死亡帮匾,警方通過查閱死者的電腦和手機啄骇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘟斜,“玉大人缸夹,你說我怎么就攤上這事÷菥洌” “怎么了虽惭?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛇尚。 經(jīng)常有香客問我芽唇,道長,這世上最難降的妖魔是什么取劫? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任匆笤,我火速辦了婚禮,結(jié)果婚禮上谱邪,老公的妹妹穿的比我還像新娘炮捧。我一直安慰自己,他們只是感情好惦银,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布咆课。 她就那樣靜靜地躺著,像睡著了一般扯俱。 火紅的嫁衣襯著肌膚如雪书蚪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天蘸吓,我揣著相機與錄音善炫,去河邊找鬼撩幽。 笑死库继,一個胖子當(dāng)著我的面吹牛箩艺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宪萄,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼艺谆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拜英?” 一聲冷哼從身側(cè)響起静汤,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎居凶,沒想到半個月后虫给,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡侠碧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年抹估,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弄兜。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡药蜻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出替饿,到底是詐尸還是另有隱情语泽,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布视卢,位于F島的核電站踱卵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏据过。R本人自食惡果不足惜颊埃,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝶俱。 院中可真熱鬧班利,春花似錦、人聲如沸榨呆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽积蜻。三九已至闯割,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竿拆,已是汗流浹背宙拉。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丙笋,地道東北人谢澈。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓煌贴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锥忿。 傳聞我的和親對象是個殘疾皇子牛郑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評論 25 707
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料敬鬓? 從這篇文章中你...
    hw1212閱讀 12,712評論 2 59
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程淹朋,因...
    小菜c閱讀 6,397評論 0 17
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 923評論 0 1
  • 別人的生活,就好像商店里的商品钉答,若真由你挑础芍,挑花眼也不滿意。 所以数尿,還是安心過自己的生活者甲,別人的再好,也是別人的砌创。...
    BabyAnt閱讀 97評論 0 0