Toolbar的使用總結(jié)

從Android5.0開始,谷歌推出了Material Design風格的導(dǎo)航控件----Toolbar申尼。粗暴的來說垮卓,它是用來替換Actionbar的(原因呢,很多寫Toolbar的文章都說了师幕,就不再啰嗦了)粟按。
Toolbar的API中寫到,相比Actionbar來說霹粥,Toolbar能夠支撐更加集中的功能集钾怔。Toolbar含有以下可選元素:

  • A navigation button: 導(dǎo)航按鈕
  • A branded logo image:logo圖標
  • A title and subtitle:標題和副標題
  • One or more custom views:一個或多個自定義view
  • An action menu:菜單按鈕

Toolbar入門

使用v7包里的Toolbar,才能向下兼容蒙挑。不然只能5.0以上的才能用宗侦。

android.support.v7.widget.Toolbar
  1. 在使用Toolbar前,要隱藏原來的Actionbar忆蚀。方法有兩種:
    • 在AndroidManifest.xml中矾利,給application或者是相應(yīng)的activity設(shè)置相應(yīng)的主題:
      android:theme="@style/Theme.AppCompat.Light.NoActionBar"
      或自定義style,在設(shè)置給application或者是相應(yīng)的activity:
      <style name="...">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
      </style>
    • 在代碼中設(shè)置:
          /**
           * 1.一定要設(shè)置在setContentView()前邊
           * 2.如果activity繼承的是AppCompatActivity(AS現(xiàn)在默認的都是AppCompatActivity),
           *   supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
           * 3.如果activity繼承的是Activity,
           *   requestWindowFeature(Window.FEATURE_NO_TITLE);
           */
          supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
          setContentView(R.layout.activity_main);
  1. 隱藏Actionbar后,就可以使用Toolbar了馋袜。
    在布局文件中添加Toolbar男旗,
<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        app:titleTextColor="#ffffff">
    </android.support.v7.widget.Toolbar>

在activity中,

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
    }

運行后欣鳖,


toobar-1.PNG

Toolbar各元素基本使用及自定義

  1. 導(dǎo)航按鈕
    • 顯示自帶的返回按鈕察皇,也就是Actionbar中的返回按鈕,并點擊監(jiān)聽
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }

運行后泽台,


toolbar-2.PNG
  • 設(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:titleTextColor="#ffffff"
        app:navigationIcon="@mipmap/menu">
- 代碼中設(shè)置
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
//        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mToolbar.setNavigationIcon(R.mipmap.menu);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }

運行后什荣,


toolbar-3.PNG
  1. 設(shè)置logo
    同樣是兩種:
app:logo="@mipmap/ic_launcher"

 mToolbar.setLogo(R.mipmap.ic_launcher);

運行后,


toolbar-4.PNG
  1. 設(shè)置標題和副標題
        app:titleTextColor="#ffffff"
        app:title="標題"
        app:subtitle="副標題"
        app:subtitleTextColor="#ffffff"

在代碼中設(shè)置

        mToolbar.setTitle("標題");
        mToolbar.setTitleTextColor(Color.WHITE);
        mToolbar.setSubtitle("副標題");
        mToolbar.setSubtitleTextColor(Color.WHITE);

運行后怀酷,


toolbar-6.PNG
  1. 自定義view
 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="View"
            android:textColor="#ffffff"
            android:layout_gravity="center"
            android:textSize="25sp"/>
    </android.support.v7.widget.Toolbar>

運行后稻爬,


toolbar-7.PNG

在代碼中設(shè)置,

 mToolbar.addView(LayoutInflater.from(this).inflate(R.layout.tv,null));

運行后蜕依,


toolbar-8.PNG
  1. 菜單按鈕
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/m1"
        android:title="分享1"
        android:icon="@drawable/share"
        app:showAsAction="never"/>
    <item
        android:id="@+id/m2"
        android:title="設(shè)置2"
        android:icon="@drawable/set"
        app:showAsAction="never"
        />
    <item
        android:id="@+id/m3"
        android:title="分享3"
        android:icon="@mipmap/share"
        app:showAsAction="always"/>
    <item
        android:id="@+id/m4"
        android:title="設(shè)置4"
        android:icon="@mipmap/set"
        app:showAsAction="always"/>
    <item
        android:id="@+id/m5"
        android:title="分享5"
        android:icon="@mipmap/share"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/m6"
        android:title="設(shè)置6"
        android:icon="@mipmap/set"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/m7"
        android:title="分享7"
        android:icon="@mipmap/share"
        app:showAsAction="ifRoom"/>
    <item
        android:id="@+id/m8"
        android:title="設(shè)置8"
        android:icon="@mipmap/set"
        app:showAsAction="ifRoom"/>
</menu>

showAsAction桅锄,指定該按鈕顯示的位置,有幾個值可選:always样眠,表示永遠顯示在actionbar中友瘤,如果屏幕空間不夠,則不顯示檐束;ifRoom辫秧,表示屏幕空間夠得話顯示在actionbar中,不夠就顯示在overflow中厢塘;never茶没,永遠顯示在overflow中肌幽。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);
        return true;
    }
 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
                     ...
        }
        return super.onOptionsItemSelected(item);
    }

運行后,


toolbar-9.PNG

toolbar-10.PNG

通過圖可以發(fā)現(xiàn)抓半,Overflow中的選項沒有顯示圖標喂急。這是官方的默認效果,Google認為隱藏在overflow中的Action按鈕都應(yīng)該只顯示文字笛求。那應(yīng)該怎樣顯示呢廊移?可以參考郭霖大神的博客:

http://blog.csdn.net/guolin_blog/article/details/18234477

總結(jié)

這篇文章是Toolbar的簡單了解和使用。在實際使用中探入,我們再根據(jù)具體需求靈活運用狡孔。
ps:寫就是學(xué)習(xí)的過程。加油7渌浴C缦ァ!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末植旧,一起剝皮案震驚了整個濱河市辱揭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌病附,老刑警劉巖问窃,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異完沪,居然都是意外死亡域庇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門覆积,熙熙樓的掌柜王于貴愁眉苦臉地迎上來听皿,“玉大人,你說我怎么就攤上這事技健⌒囱ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵雌贱,是天一觀的道長。 經(jīng)常有香客問我偿短,道長欣孤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任昔逗,我火速辦了婚禮降传,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勾怒。我一直安慰自己婆排,他們只是感情好声旺,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著段只,像睡著了一般腮猖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赞枕,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天澈缺,我揣著相機與錄音,去河邊找鬼炕婶。 笑死姐赡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的柠掂。 我是一名探鬼主播项滑,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涯贞!你這毒婦竟也來了杖们?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤肩狂,失蹤者是張志新(化名)和其女友劉穎摘完,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻谁,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡孝治,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了审磁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谈飒。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖态蒂,靈堂內(nèi)的尸體忽然破棺而出杭措,到底是詐尸還是另有隱情,我是刑警寧澤钾恢,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布手素,位于F島的核電站,受9級特大地震影響瘩蚪,放射性物質(zhì)發(fā)生泄漏泉懦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一疹瘦、第九天 我趴在偏房一處隱蔽的房頂上張望崩哩。 院中可真熱鬧,春花似錦、人聲如沸邓嘹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汹押。三九已至矿筝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲸阻,已是汗流浹背跋涣。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸟悴,地道東北人陈辱。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像细诸,于是被迫代替她去往敵國和親沛贪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程震贵,因...
    小菜c閱讀 6,358評論 0 17
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 909評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • 愛多了是負累猩系,是傷害媚送。最好不要欠別人東西,尤其感情寇甸,有些感情需要你用這輩子來償還塘偎。 會壓的你喘不過氣。會很累拿霉。
    喵性少女閱讀 278評論 0 1
  • day41思想的眼睛 要明確自己應(yīng)該要做什么的前提是要明確自己的目的吟秩,這點上報道攝影和紀錄片是有共同之處的。 常見...
    F北落師門閱讀 157評論 0 0