關(guān)于標(biāo)題欄你的選擇

說起Android app的標(biāo)題欄榜揖,有默認(rèn)的ActionBar幢炸,現(xiàn)在應(yīng)該沒什么人用了歇僧,也有設(shè)置NoTitle之后去自定義Layout布局加入每個頁面中碧信,還有這篇文章想說的ToolBar跛溉。

ActionBar扮授,google推出ToolBar來取代ActionBar刹勃,說明ActionBar還是有其局限荔仁,不能很好的跟上google提倡的Material Design乏梁。自定義布局這種方式如果實在喜歡,也不是不可滓玖,那為什么我喜歡ToolBar势篡,因為這是google推出的禁悠,簡單東西簡單用碍侦,就好比下拉刷新,如果沒有特別要求瓷产,我也是喜歡google提供的那個刷新控件濒旦。

說了半天,該說一下ToolBar這個控件尔邓。ToolBar是5.0推出的梯嗽,一般而言我們都會用v7下的包

<android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="#0000ff"/>

首先因為新建的項目都是默認(rèn)有個標(biāo)題欄的,所以要先去掉標(biāo)題欄循头,去掉標(biāo)題欄就不贅述了卡骂,這里我在代碼里去除,oncreate方法中唯笙,setcontentView 之前加上 requestWindowFeature(Window.FEATURE_NO_TITLE);?

然后在代碼里面找到ToolBar控件進(jìn)行各種設(shè)置崩掘,不設(shè)置的項苞慢,不會顯示

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

toolbar.setNavigationIcon(R.drawable.arrow);//設(shè)置左邊圖片

toolbar.setLogo(R.drawable.ic_launcher);//設(shè)置app logo

toolbar.setTitle("標(biāo)題");//設(shè)置標(biāo)題

toolbar.setSubtitle("小標(biāo)題");//設(shè)置小標(biāo)題

toolbar.inflateMenu(R.menu.menu_main);//設(shè)置右側(cè)菜單

這里有個菜單項

res目錄下新建一個menu文件夾绍赛,存放menu的xml文件

menu的格式如下


menu里面設(shè)置菜單項吗蚌,不限個數(shù),可以為該菜單項設(shè)置圖片纯出,如果沒設(shè)置圖片,顯示的就是title的文字暂筝,如果設(shè)置了圖片,顯示圖片焕襟,同時長按圖片會彈出title文字陨收,這里有個showAsAction屬性胧洒,常用的是ifRoom畏吓,表示如果有剩余空間,則顯示該項卫漫。never,表示永遠(yuǎn)不會顯示該項列赎,如果有一個item設(shè)置了never包吝,那么ToolBar的最右端會有一個設(shè)置選項诗越,點擊會彈出設(shè)置了never的菜單項嚷狞,always块促,表示總是顯示該項。如果你設(shè)置了很多個always薇搁,那會一直向左擠斋扰,使左邊的控件隱藏。應(yīng)該沒人這樣搞吧。传货。給自己找事不是么屎鳍。。

ToolBar上的各種控件损离,相應(yīng)的也可以設(shè)置一些屬性哥艇,比如設(shè)置標(biāo)題的字體大小,顏色

左側(cè)圖片的點擊事件僻澎,右側(cè)菜單的點擊事件

字體的就不多說了貌踏,下面是點擊事件的設(shè)置

//導(dǎo)航按鈕點擊

toolbar.setNavigationOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

//TODO? dosomething

}

});

//菜單點擊

toolbar.setOnMenuItemClickListener(newToolbar.OnMenuItemClickListener() {

@Override

public booleanonMenuItemClick(MenuItem item) {

switch(item.getItemId()) {

caseaction_edit:

break;

caseaction_share:

break;

caseaction_setting:

break;

}

Toast.makeText(MainActivity.this,"onClick"+item.getTitle(),Toast.LENGTH_SHORT).show();

return false;

}

});

實際上講到這里ToolBar已經(jīng)可以正常使用了

大概就是這樣


TOOlBar效果圖

但是有時候這么一層不變的UI并不能滿足千變?nèi)f化的需求

比如說這個標(biāo)題需要居中,原生的ToolBar并沒有提供接口讓開發(fā)去設(shè)置窟勃,標(biāo)題一定是靠著logo右端的

標(biāo)題居中祖乳,我們可以這樣做,因為ToolBar是一個ViewGroup秉氧,所以他可以添加子控件眷昆,我們在布局的Toolbar里添加一個TextView來取代原先的標(biāo)題

<android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

android:background="#0000ff">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="我是居中的標(biāo)題"/>

</android.support.v7.widget.Toolbar>


標(biāo)題居中

另外一點,就是ToolBar的重用問題汁咏,給一個單獨的Layout布局亚斋,include到需要標(biāo)題欄的地方,可以減少很多重復(fù)代碼

如果像我上面這樣使用ToolBar攘滩,(有另外一種setSupportActionBar(toolbar);)

相比起來帅刊,第二種使用toolbar去替換原先的ActionBar,所以他可以調(diào)用onCreateOptionsMenu漂问,onPrepareOptionsMenu赖瞒,之類的方法,來操作右邊的menu蚤假,而第一種直接在toolbar里調(diào)用方法去inflate一個menu栏饮。這里是有一個考慮,就是如果相同的toolbar磷仰,右端menu可能展示是不一樣的袍嬉,如果有第二中方法,可以在onPrepareOptionsMenu里做各種判斷灶平,讓menu展示哪個伺通,而第一種,因為不走這個方法民逼,所以不能這樣操作泵殴。

其實只要在創(chuàng)建toolbar的時候inflate另外的menu布局就行了涮帘,還省了許多邏輯判斷

最后呢

在用toolbar的時候拼苍,上面的高度設(shè)置成?attr/actionBarSize,是默認(rèn)的標(biāo)題欄高度,如果你設(shè)置成wrap_content也是一樣的效果,高度是56dp,這應(yīng)該是google推薦的一個高度疮鲫,(并且不推薦開發(fā)者修改),如果你設(shè)置高度太小吆你,那整個標(biāo)題欄看起來的效果就會差強(qiáng)人意,該居中的不居中了俊犯,該對其的沒有對齊妇多。如果你的標(biāo)題欄需要原生的這種效果,那不建議修改高度燕侠,如果你是只有一個居中標(biāo)題的那種者祖,toolbar里加一個TextView設(shè)置居中,高度就隨便你設(shè)置了~不過如此簡單的布局toolbar好像大材小用了~

第一次發(fā)文绢彤,有什么錯誤的歡迎指出~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末七问,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茫舶,更是在濱河造成了極大的恐慌械巡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶氏,死亡現(xiàn)場離奇詭異讥耗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)疹启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門古程,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皮仁,你說我怎么就攤上這事籍琳。” “怎么了贷祈?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵趋急,是天一觀的道長。 經(jīng)常有香客問我势誊,道長呜达,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任粟耻,我火速辦了婚禮查近,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挤忙。我一直安慰自己霜威,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布册烈。 她就那樣靜靜地躺著戈泼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上大猛,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天扭倾,我揣著相機(jī)與錄音,去河邊找鬼挽绩。 笑死膛壹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的唉堪。 我是一名探鬼主播模聋,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唠亚!你這毒婦竟也來了撬槽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤趾撵,失蹤者是張志新(化名)和其女友劉穎侄柔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占调,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡暂题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了究珊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪者。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剿涮,靈堂內(nèi)的尸體忽然破棺而出言津,到底是詐尸還是另有隱情,我是刑警寧澤取试,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布悬槽,位于F島的核電站,受9級特大地震影響瞬浓,放射性物質(zhì)發(fā)生泄漏初婆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一猿棉、第九天 我趴在偏房一處隱蔽的房頂上張望磅叛。 院中可真熱鬧,春花似錦萨赁、人聲如沸弊琴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敲董。三九已至详瑞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間臣缀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工泻帮, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留精置,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓锣杂,卻偏偏與公主長得像脂倦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子元莫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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

  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程赖阻,因...
    小菜c閱讀 6,401評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評論 25 707
  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 923評論 0 1
  • 上級規(guī)勸我,她也是這樣一步步走過來的踱蠢,可是我想說的是我并不會和你比較火欧,我真正在心底暗暗較勁的只有自己的同齡人,無論...
    松果云閱讀 229評論 0 0
  • “張鵬茎截,你...你居然背著我苇侵!”哐!小可不忍直視眼前的一幕企锌,回頭用力的甩上門榆浓,她強(qiáng)掩住淚水,但她纖細(xì)的手指哪能捉住...
    盛哥閱讀 205評論 0 0