ToolBar詳解和menu結(jié)合使用及menu圖標(biāo)不顯示問題

Toolbar 引入使用

xml布局中加入

<color name="weixin_bg">#434343</color>

<android.support.v7.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/weixin_bg"
        android:theme="@style/AppTheme.ToolBar"
        app:title="@string/app_name"/>

主題改為隱藏ActionBar:

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

Activity代碼中加入:

setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

ToolBar 樣式:

<style name="AppTheme.ToolBar" parent="AppTheme">
        <!--ToolBar 字體顏色改為白色 -->
        <item name="titleTextColor">@android:color/white</item>
        <!-- 溢出菜單圖標(biāo)顏色 -->
        <item name="colorControlNormal">@android:color/white</item>
        <!-- 右側(cè)溢出菜單圖標(biāo)自定義 -->
        <item name="actionOverflowButtonStyle">@style/ActionButton.Overflow</item>
        <!-- 是否覆蓋錨點,默認(rèn)為true责嚷,即蓋住 Toolbar -->
        <item name="overlapAnchor">false</item>
        <!-- 彈出層背景顏色 -->
        <item name="android:colorBackground">@color/weixin_bg</item>
        <!-- 設(shè)置彈出菜單文字顏色 -->
        <item name="android:textColor">@android:color/white</item>
        <!-- 彈出層垂直方向上的偏移搓蚪,即在豎直方向上距離Toolbar的距離搬素,值為負(fù)則會蓋住Toolbar -->
        <item name="android:dropDownVerticalOffset">0dp</item>
        <!-- 彈出層水平方向上的偏移,即距離屏幕左邊的距離,負(fù)值會導(dǎo)致右邊出現(xiàn)空隙 -->
        <item name="android:dropDownHorizontalOffset">0dp</item>
    </style>
    <!-- 右側(cè)溢出菜單圖標(biāo)自定義 -->
    <style name="ActionButton.Overflow" parent="android:Widget.ActionButton.Overflow">
        <item name="android:src">@drawable/actionbar_add_icon</item>
    </style>

解決菜單Menu添加Icon無效問題锌蓄,讓菜單同時顯示圖標(biāo)和文字

在使用過程中發(fā)現(xiàn)溢出菜單menu 只顯示文字不顯示圖標(biāo):使用反射升筏,要重寫一個onMenuOpened()方法即可解決。

/**
     * 利用反射機(jī)制調(diào)用MenuBuilder的setOptionalIconsVisible方法設(shè)置mOptionalIconsVisible為true瘸爽,
     * 給菜單設(shè)置圖標(biāo)時才可見 讓菜單同時顯示圖標(biāo)和文字
     */
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
        if (menu != null) {
            if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
                try {
                    Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    method.setAccessible(true);
                    method.invoke(menu, true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return super.onMenuOpened(featureId, menu);
    }

ToolBar 屬性設(shè)置

添加背景色:

<color name="weixin_bg">#434343</color>
android:background="@color/weixin_bg"

基本屬性設(shè)置

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        app:navigationIcon="@mipmap/title_bar_back"http://左側(cè)圖標(biāo)
        app:subtitle="子標(biāo)題"
        app:subtitleTextColor="#fff" //子標(biāo)題顏色
        app:title="標(biāo)題"
        app:titleTextColor="#fff"/> //標(biāo)題顏色

添加選項菜單menu

創(chuàng)建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/action_search"
        android:icon="@drawable/actionbar_search_icon"
        android:title="@string/action_search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="ifRoom|collapseActionView"/>

    <item
        android:id="@+id/action_group_chat"
        android:icon="@drawable/menu_group_chat_icon"
        android:title="@string/menu_group_chat"/>
    <item
        android:id="@+id/action_add_friend"
        android:icon="@drawable/menu_add_icon"
        android:title="@string/menu_add_friend"/>
    <item
        android:id="@+id/action_scan"
        android:icon="@drawable/men_scan_icon"
        android:title="@string/menu_scan"/>
    <item
        android:id="@+id/action_feedback"
        android:icon="@drawable/menu_feedback_icon"
        android:title="@string/menu_feedback"/>
</menu>

showAsAction:屬性有五個之:ifRoom您访、never、always剪决、withText灵汪、collapseActionView

  • ifRoom:如果有空間,就顯示出來
  • never:永遠(yuǎn)不會顯示柑潦。只在溢出列表中顯示识虚,而且只顯示標(biāo)題
  • always:無論是否溢出,總會顯示
  • withText:示意ActionBar要顯示文本的標(biāo)題妒茬。ActionBar會盡可能的顯示這個標(biāo)題担锤,但是,如果圖標(biāo)有效并且受到ActionBar空間的限制乍钻,文本標(biāo)題就有可能顯示不全
  • collapseActionView:聲明了這個操作視窗應(yīng)該被折疊到一個按鈕中肛循,當(dāng)用戶選擇這個按鈕時,這個操作視窗展開银择。否則多糠,這個操作視窗在默認(rèn)的情況下是可見的,并且即便在用于不適用的時候浩考,也要占還有操作欄的有效空間夹孔,一般要配合ifRoom一起使用才有效

代碼中重寫onCreateOptionsMenu方法加載菜單文件

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

左側(cè)返回箭頭

想要顯示自帶的返回箭頭,需要去掉之前設(shè)定的屬性:

app:navigationIcon="@mipmap/title_bar_back"

然后在代碼中添加:

getSupportActionBar().setHomeButtonEnabled(true); //設(shè)置返回鍵可用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

溢出圖標(biāo)顏色

<!-- 溢出菜單圖標(biāo)顏色-->
<item name="colorControlNormal">@android:color/white</item

自定義右側(cè)溢出圖標(biāo)

<style name="AppTheme.ToolBar" parent="AppTheme">
        <!--ToolBar 字體顏色改為白色 -->
        <item name="titleTextColor">@android:color/white</item>
        <!-- 溢出菜單圖標(biāo)顏色 -->
        <item name="colorControlNormal">@android:color/white</item>
        <!-- 右側(cè)溢出菜單圖標(biāo)自定義 -->
        <item name="actionOverflowButtonStyle">@style/ActionButton.Overflow</item>
</style>
     
<!-- 右側(cè)溢出菜單圖標(biāo)自定義 -->
<style name="ActionButton.Overflow" parent="android:Widget.ActionButton.Overflow">
    <item name="android:src">@drawable/actionbar_add_icon</item>
</style>

更改彈出菜單背景

<!-- toolbar彈出菜單樣式背景 -->
<!-- 彈出層背景顏色 -->
 <item name="android:colorBackground">@color/weixin_bg</item>

更改彈出菜單文字顏色

<!-- 設(shè)置彈出菜單文字顏色 -->
<item name="android:textColor">@android:color/white</item>

修改標(biāo)題文字大小

添加配置:

app:titleTextAppearance="@style/ToolbarTitleSize"

添加style:

<!-- toolbar標(biāo)題文字大小 -->
<style name="ToolbarTitleSize" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">28sp</item>
</style>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末析孽,一起剝皮案震驚了整個濱河市搭伤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袜瞬,老刑警劉巖怜俐,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邓尤,居然都是意外死亡拍鲤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門汞扎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來季稳,“玉大人,你說我怎么就攤上這事澈魄【笆螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵一忱,是天一觀的道長莲蜘。 經(jīng)常有香客問我谭确,道長,這世上最難降的妖魔是什么票渠? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任逐哈,我火速辦了婚禮,結(jié)果婚禮上问顷,老公的妹妹穿的比我還像新娘昂秃。我一直安慰自己,他們只是感情好杜窄,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布肠骆。 她就那樣靜靜地躺著,像睡著了一般塞耕。 火紅的嫁衣襯著肌膚如雪蚀腿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天扫外,我揣著相機(jī)與錄音莉钙,去河邊找鬼。 笑死筛谚,一個胖子當(dāng)著我的面吹牛磁玉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驾讲,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蚊伞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吮铭?” 一聲冷哼從身側(cè)響起时迫,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沐兵,沒想到半個月后别垮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡扎谎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烧董。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毁靶。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逊移,靈堂內(nèi)的尸體忽然破棺而出预吆,到底是詐尸還是另有隱情,我是刑警寧澤胳泉,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布拐叉,位于F島的核電站岩遗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凤瘦。R本人自食惡果不足惜宿礁,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔬芥。 院中可真熱鬧梆靖,春花似錦、人聲如沸笔诵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乎婿。三九已至测僵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谢翎,已是汗流浹背恨课。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留岳服,地道東北人剂公。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像吊宋,于是被迫代替她去往敵國和親纲辽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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