Android Toolbar 總結(jié)

ToolBar介紹

ToolBar是Android5.0引入刁绒,可使用support v7兼容包開發(fā)。Android開發(fā)中逐漸使用ToolBar替換掉ActionBar龙填。

ToolBar常用設(shè)置項

  • toolbar:navigationIcon
    左側(cè)圖標(biāo)封断,默認(rèn)是一個Back箭頭
  • toolbar:logo
    app圖標(biāo)而昨,展示位置和navigationIcon差不多,一般用navigationIcon
  • toolbar:subtitle
    副標(biāo)題
  • toolbar:title
    標(biāo)題

注:命名空間一定要用toolbar惭婿,不要用android命名空間不恭。sdk bug,用android命名空間财饥,設(shè)置不生效换吧。

項目開發(fā)

由于項目開發(fā)過程中,對toolbar的自定義程度比較高钥星,所有沒有采用toolbar自帶的幾個屬性沾瓦,而是采用在xml文件ToolBar標(biāo)簽包裹自定義布局的方式引入。
1)在layout布局文件中引入ToolBar

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/ToolbarStyle"
        app:theme="?attr/actionBarTheme">
        <include layout="@layout/toolbar_web"/>
    </android.support.v7.widget.Toolbar>

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toolbar"/>

</RelativeLayout>

代碼中谦炒,Toolbar標(biāo)簽內(nèi)包裹了實際的布局文件贯莺,此處使用include標(biāo)簽,保證代碼的整潔性宁改。
toolbar_web.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/app_brand_color"
                android:orientation="horizontal">
    <LinearLayout
        android:id="@+id/toolbar_back"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="60dp"
        android:layout_alignParentLeft="true"
        android:background="@drawable/btn_white_hover"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        >
        <ImageView
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:layout_marginLeft="14dp"
            android:layout_marginRight="14dp"
            android:src="@drawable/toolbar_back"
            />
        <TextView
            android:id="@+id/toolbar_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dp"
            android:paddingRight="4dp"
            android:singleLine="true"
            android:textColor="#ffffff"
            android:textSize="20sp"
            />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/toolbar_share"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp"
        android:background="@drawable/btn_white_hover"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        >
        <ImageView
            android:layout_width="16dp"
            android:layout_height="16dp"
            android:scaleType="centerCrop"
            android:src="@drawable/web_share_ic"
            />
    </LinearLayout>
</RelativeLayout>

項目中以toolbar_xxx.xml的命名方法統(tǒng)一定義toolbar內(nèi)部的布局文件缕探,布局文件內(nèi)部toolbar_back,toolbar_title采用統(tǒng)一的命名方法还蹲,以便于項目管理爹耗。

layout目錄下部分toolbar布局文件

2)代碼中使用ToolBar

  • 在BaseActivity中用toolbar替換默認(rèn)的actionbar
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int layoutId = getLayoutId();
        if (layoutId != -1) {
            setContentView(layoutId);
        }
        Injector.inject(this,this);
    
        mContext = this;
    
        readIntent();
    
        if (findViewById(R.id.toolbar) != null){
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(false);
            getSupportActionBar().setDisplayShowTitleEnabled(false);
        }
    
        initControls(savedInstanceState);
        setListeners();
        overridePendingTransition(R.anim.left_in, R.anim.hold);
    
    }
    

這里必須要設(shè)置setDisplayHomeAsUpEnabled為false耙考,否則就算沒有設(shè)置navigationIcon,也會莫名其妙的出現(xiàn)默認(rèn)的Icon~~

2)在實際的activity中潭兽,找到對應(yīng)的View實例

activity中綁定對應(yīng)的view

3)ToolBar相關(guān)view的響應(yīng)事件

@Override
  protected void setListeners() {
      toolbarBack.setOnClickListener(this);
      toolbarSend.setOnClickListener(this);
      listView.setOnItemClickListener(itemClickListener);
  }
 @Override
   public void onClick(View v) {
       switch (v.getId()){
           case R.id.toolbar_back:
               finish();
               break;
           case R.id.toolbar_send:
               int position = listView.getCheckedItemPosition();
               if(position < 0){
                   ToastUtils.showToast("請選擇一個分?jǐn)?shù)");
                   return;
               }
               break;
       }
   }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倦始,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讼溺,更是在濱河造成了極大的恐慌楣号,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怒坯,死亡現(xiàn)場離奇詭異炫狱,居然都是意外死亡,警方通過查閱死者的電腦和手機剔猿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門视译,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人归敬,你說我怎么就攤上這事酷含。” “怎么了汪茧?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵椅亚,是天一觀的道長。 經(jīng)常有香客問我舱污,道長呀舔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任扩灯,我火速辦了婚禮媚赖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好均抽,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磨隘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顾患。 梳的紋絲不亂的頭發(fā)上琳拭,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音描验,去河邊找鬼白嘁。 笑死,一個胖子當(dāng)著我的面吹牛膘流,可吹牛的內(nèi)容都是我干的絮缅。 我是一名探鬼主播鲁沥,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耕魄!你這毒婦竟也來了画恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吸奴,失蹤者是張志新(化名)和其女友劉穎允扇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體则奥,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡考润,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了读处。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糊治。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罚舱,靈堂內(nèi)的尸體忽然破棺而出井辜,到底是詐尸還是另有隱情,我是刑警寧澤管闷,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布粥脚,位于F島的核電站,受9級特大地震影響包个,放射性物質(zhì)發(fā)生泄漏刷允。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一赃蛛、第九天 我趴在偏房一處隱蔽的房頂上張望恃锉。 院中可真熱鬧搀菩,春花似錦呕臂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至州既,卻和暖如春谜洽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吴叶。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工阐虚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚌卤。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓实束,卻偏偏與公主長得像奥秆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咸灿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

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

  • 原文地址:http://www.android100.org/html/201606/06/241682.html...
    AFinalStone閱讀 909評論 0 1
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程构订,因...
    小菜c閱讀 6,358評論 0 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,515評論 25 707
  • 從Android5.0開始,谷歌推出了Material Design風(fēng)格的導(dǎo)航控件----Toolbar避矢。粗暴的來...
    Harry66閱讀 696評論 2 0
  • 星期六下午的時候悼瘾,在我家的院子里,我提議弟弟還有爸爸我們一起玩捉迷藏的游戲审胸。 游戲開始了亥宿, 我們先...
    泊泊戰(zhàn)隊閱讀 226評論 0 1