MD系列之Toolbar和NavigationView快速入門

一陷虎、快速使用

第一步:導(dǎo)包
compile 'com.android.support:design:25.1.0'
第二步:取消原有Actionbar,不然會報已有Actionbar的錯誤:
(1)自定義沒有Actionbar的風(fēng)格

    <style name="AppTheme.noActionbar" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

(2)在AndroidManifest.xml中設(shè)置給Activity

 <application 
        android:theme="@style/AppTheme.noActionbar"
        ...>

第三部:布局文件中添加Toolbar

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"  
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
    </android.support.v7.widget.Toolbar>

第四步:在Activity中設(shè)置Toolbar

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

這樣就完成了自定義Toolbar的添加。

二贿条、Toolbar上的元素

  • 標(biāo)題和子標(biāo)題(title and subtitle)
    setTitle(String title)
    setSubTitle(String title)
    ** 必須要在setSupportActionBar(toolbar)之前設(shè)置**

  • Logo圖標(biāo)
    setLogo(int resId)

  • 組件 View
    因為Toolbar繼承于ViewGroup本身是一個容器洪灯,可以添加View組件冬骚,可以在布局文件里面添加嘶窄√桥猓可以用于添加搜索欄(后續(xù)補(bǔ)充)

  • Action Menu 設(shè)置菜單
    1战虏、menu配置文件
    在res/menu中增加menu的布局文件(如果沒有拣宰,新建)
    <menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
    android:id="@+id/action_ball"
    android:title="籃球"
    android:showAsAction="never"
    tools:ignore="AppCompatResource"
    android:orderInCategory="80"/>
    <item .../>
    其中:showAsAction屬性,
    可選always(總是顯示)烦感、
    never(不顯示)巡社、
    ifRoom(有空間就顯示)

      2、設(shè)置關(guān)聯(lián)
      在activity中重寫onCreateOptionMenu(Menu menu)
          @Override
          public boolean onCreateOptionsMenu(Menu menu) {
              getMenuInflater().inflate(R.menu.action_menu,menu);
          return true;
    
      3手趣、重寫回調(diào)函數(shù)
      toolbar.setOnMenuItemClickListener(
          new Toolbar.OnMenuItemClickListener() {
          @Override
          public boolean onMenuItemClick(MenuItem item) {}
          );
    
  • Navigation Button 導(dǎo)航按鈕
    使用DrawerLayout + NavigationView + Toolbar實現(xiàn)側(cè)滑導(dǎo)航欄

三晌该、DrawerLayout + NavigationView + Toolbar實現(xiàn)側(cè)滑導(dǎo)航欄

  • 第一步:布局文件
    一般整體布局文件如下:
<!--整體布局,最外層為DrawerLayout-->
<android.support.v4.widget.DrawerLayout...>
      <!-- content部分绿渣,可以通過include添加內(nèi)容朝群,Toobar在activity_main中 -->
      <include layout="@layout/activity_main"... />
      <!-- navigationView部分 -->
      <android.support.design.widget.NavigationView.../>
</android.support.v4.widget.DrawerLayout>

下面來看每個部分的屬性:
*** DrawerLayout部分 ***

<android.support.v4.widget.DrawerLayout
    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:id="@+id/drawerLayout"
    >

*** NavigationView部分 ***

<!--
1、layout_gravity屬性:必須設(shè)置中符,指明導(dǎo)航欄的位置潜圃;不指定的話,將全屏
2舟茶、app:menu屬性:必須設(shè)置谭期。 指明導(dǎo)航欄菜單布局文件(res/menu/下)堵第,格式如下:
      <menu>
          <group>
              <item/>導(dǎo)航欄中的選項
              ...
          </group>
      </menu>
3、app:headerLayout屬性:可選隧出。指明布局文件踏志,一般為導(dǎo)航欄添加頭像和說明
-->
<android.support.design.widget.NavigationView
        android:id="@+id/navigationView" 
        android:layout_width="match_parent"
        android:layout_height="match_parent"        
        android:layout_gravity="start"
        app:menu="@menu/navigation_menu"
        app:headerLayout="@layout/header_layout">
    </android.support.design.widget.NavigationView>
  • 第二步:activity中構(gòu)建組件并設(shè)置監(jiān)聽
        //Toolbar組件
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        //抽屜布局組件
        DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        //構(gòu)建對應(yīng)的拖拽監(jiān)聽,5個參數(shù):上下文胀瞪、DrawerLayout针余、Toolbar、open字符串凄诞、close字符串
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
              this,drawerLayout,toolbar,R.string.open,R.string.close);
        //綁定監(jiān)聽
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
  • 第三步:導(dǎo)航欄點(diǎn)擊圆雁、關(guān)閉事件監(jiān)聽和回調(diào)函數(shù)
    為NavigationView的Menu添加監(jiān)聽
//設(shè)置監(jiān)聽
setNavigationItemSelectedListener(NavigationView.OnNavigationItemSelectedListener())
//重寫回調(diào)方法
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    drawerLayout.closeDrawer(GravityCompat.START);//關(guān)閉導(dǎo)航欄
    //其他時間響應(yīng)操作
    return false;
}
//通過onBackPressed()來關(guān)閉
if(drawerLayout.isDrawerOpen(GravityCompat.START)) {
   drawerLayout.closeDrawer(GravityCompat.START);
}else{
   super.onBackPressed();
   }        

為HeaderView添加監(jiān)聽
使用mNavigationView.getHeaderView(0);獲取對象,再單獨(dú)添加監(jiān)聽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帆谍,一起剝皮案震驚了整個濱河市伪朽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汛蝙,老刑警劉巖烈涮,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窖剑,居然都是意外死亡坚洽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門西土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讶舰,“玉大人,你說我怎么就攤上這事需了√纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵援所,是天一觀的道長庐舟。 經(jīng)常有香客問我,道長住拭,這世上最難降的妖魔是什么挪略? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮滔岳,結(jié)果婚禮上杠娱,老公的妹妹穿的比我還像新娘。我一直安慰自己谱煤,他們只是感情好摊求,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刘离,像睡著了一般室叉。 火紅的嫁衣襯著肌膚如雪睹栖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天茧痕,我揣著相機(jī)與錄音野来,去河邊找鬼。 笑死踪旷,一個胖子當(dāng)著我的面吹牛曼氛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播令野,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼舀患,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了气破?” 一聲冷哼從身側(cè)響起聊浅,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堵幽,沒想到半個月后狗超,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弹澎,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朴下,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苦蒿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殴胧。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佩迟,靈堂內(nèi)的尸體忽然破棺而出团滥,到底是詐尸還是另有隱情,我是刑警寧澤报强,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布灸姊,位于F島的核電站,受9級特大地震影響秉溉,放射性物質(zhì)發(fā)生泄漏力惯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一召嘶、第九天 我趴在偏房一處隱蔽的房頂上張望父晶。 院中可真熱鬧,春花似錦弄跌、人聲如沸甲喝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埠胖。三九已至糠溜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間直撤,已是汗流浹背诵冒。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谊惭,地道東北人汽馋。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像圈盔,于是被迫代替她去往敵國和親豹芯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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

  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程驱敲,因...
    小菜c閱讀 6,426評論 0 17
  • 本文出自 “阿敏其人” 簡書博客众眨,轉(zhuǎn)載或引用請注明出處握牧。 一、Google口中的ToolBar 從Toolbar說...
    阿敏其人閱讀 4,209評論 2 36
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,173評論 25 707
  • 兆麟公園坐落在哈爾濱市松花江南岸邊鬧市區(qū)娩梨,是以著名抗日聯(lián)軍將軍李兆麟將軍命名的城市園林風(fēng)景區(qū)沿腰。 注:本文中個別照片...
    石壽寧閱讀 319評論 0 0
  • 中國的農(nóng)村,一般在老人辭世的脫離儀式上狈定,有一個“領(lǐng)羊”的習(xí)俗颂龙。其法是用人圍成一個人墻來堵攔著羊,中間纽什,由祭...
    徐山燕老閱讀 4,715評論 4 4