作者簡介? 原創(chuàng)微信公眾號郭霖 WeChat ID: guolin_blog
啦啦啦,大家早上好柄驻,又是新的一周焙压!
本篇來自James_shu的投稿涯曲,分享了一些自定義Toolbar的方式,通俗易懂拨黔,希望對大家有所幫助绰沥。
James_shu的博客地址:
http://blog.csdn.net/james_shu
正文
本篇我來說一下 ToolBar 的其他用法徽曲。如果不清楚基本用法的可以參照我的上一篇博文:
http://blog.csdn.net/james_shu/article/details/61661217
注意上次的代碼都是在Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar)與setSupportActionBar(toolbar)之間進行設(shè)定的。
其中setSupportActionBar(toolbar)指定了我們的 ToolBar 會繼承使用 ActionBar 的一些屬性涧衙。
其中,當(dāng)我們未設(shè)定標(biāo)題的時候,ToolBar 默認會顯示 APP 的 Label,而且顯示在屏幕的左上角,類似的效果還有其他的幾個,下面我首先介紹不使用?setSupportActionBar(toolbar)時,為了滿足我們的業(yè)務(wù)需求,我們所需要進行的定制操作弧哎。
1. 標(biāo)題的設(shè)定
同樣的,我們也可以在布局文件中進行指定:
app:subtitle="Title"app:title="Subtitle"
注意,通過上面的方式設(shè)置的標(biāo)題默認是在 ToolBar 標(biāo)題欄的左上角,我們?nèi)绻獙?biāo)題居中顯示, 可以在xml自定義標(biāo)題,此時的 setTitle 可以設(shè)置為空。ToolBar 在不繼承 ActionBar 的屬性的時候,Title 默認是消失的
實現(xiàn)的效果:
2. 菜單的設(shè)定
當(dāng)我們使用 ActionBar 時,經(jīng)常在標(biāo)題欄的右上角顯示我們的菜單,而在我們的 ToolBar 中設(shè)定也很簡單:
注意,當(dāng)時用了setSupportActionBar(toolbar)時,上面的設(shè)定會失效,下文會有說明鸭限。
當(dāng)然目前的設(shè)定可定制性仍然還沒有完全體現(xiàn)出來两踏。默認的 Menu 都會顯示在右邊,如果我們要將我們的菜單也能在左邊顯示呢? support-v7包 為我們提供了 ActionMenuView 這個控件來完成定制功能梦染。
首先在xml中定義:
將?ActionMenuView 放在 ToolBar 的第一個 子View 的位置,就能將菜單在左邊顯示。同時為了去掉左邊默認帶的邊距我們需要指定兩個屬性:
app:contentInsetLeft="0dp"app:contentInsetStart="0dp"
然后我們可以在代碼中設(shè)定:
目前實現(xiàn)的效果如下:
當(dāng)然,ToolBar 中的菜單選項可以設(shè)定加載布局文件:
或者在代碼中設(shè)定:
監(jiān)聽事件的設(shè)定:
ToolBar 是MD規(guī)范中的控件,當(dāng)然Google官方也為我們指定了設(shè)置 ToolBar 上按鈕屬性的方式:
3. 導(dǎo)航圖標(biāo)的設(shè)定
下面介紹當(dāng)使用setSupportActionBar(toolbar)時,由于我們會繼承 ActionBar 自帶的一些屬性,所以此時我們的可定制性不是那么高,但是會更加方便快捷
1. 標(biāo)題的設(shè)定
如果我們在代碼中使用了 ToolBar 的 setTitle 的函數(shù),那么新設(shè)定的值會覆蓋原來的 Label 效果。當(dāng)然在xml中的定制也是一樣的钾怔。
2. 菜單的設(shè)定
如果我們使用 setSupportActionBar(toolbar),我們無法使用上面的方式設(shè)定菜單而應(yīng)該使用傳統(tǒng)的方式:
3. 導(dǎo)航欄的設(shè)置
Ok,我能想到的 ToolBar 的使用方式就這些,如果你有更好的使用方式,請給我留言,謝謝愚臀。
文章原創(chuàng)作者GuoLin 書籍推薦
郭林大神原創(chuàng)android 書籍:《第一行代碼 android》