Android開(kāi)發(fā)-----Toorbar組件使用

Toorbar組件介紹

Toolbar是在 Android 5.0 開(kāi)始推出的一個(gè) Material Design 風(fēng)格的導(dǎo)航控件 象泵,Google 推出的 Toorbar取代之前的 ActionbarActionbar 相比乾翔, Toolbar 明顯要靈活的多讶凉,可以放到界面的任意位置记焊。除此之外听想,在設(shè)計(jì) Toolbar 的時(shí)候蛮艰,Google也留給了開(kāi)發(fā)者很多可定制修改的余地,根據(jù)API可以知道Toorbar有如下功能:

  • 設(shè)置導(dǎo)航欄圖標(biāo)
  • 設(shè)置App的logo
  • *支持設(shè)置標(biāo)題和子標(biāo)題 *
  • *支持添加一個(gè)或多個(gè)的自定義控件 *
  • *支持Action Menu *

效果瀏覽

*來(lái)自_小小莊*

使用Toorbar

官方提供了Toolbar,也提供了Support library向下兼容的支持包窍侧,如果是5.0以下的需要添加如下依賴
compile 'com.android.support:appcompat-v7:23.3.0'
然后因?yàn)門(mén)oorbar要替代之前的Actionbar ,所以要隱藏之前的Actionbar,直接在res/values/style.xml修改:NoActionBar即可转绷,

   <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

然后在activity_main布局文件中加入:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/id_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#AFAFff"
        android:elevation="4dp"
        >
        <!-- 自定義控件顯示-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"/>
    </android.support.v7.widget.Toolbar>
</LinearLayout>

布局文件中的android:elevation="4dp"代表控件的陰影高度
在res目錄先新建menu文件夾伟件,再在menu文件下新建menu_seting.xml文件,追加內(nèi)容如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/share"
        android:title="分享"
        android:icon="@drawable/share"
        android:orderInCategory="3"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/cacle"
        android:title="取消"
        android:orderInCategory="1"
        app:showAsAction="never" />
    <item
        android:id="@+id/setting"
        android:title="設(shè)置"
        android:icon="@drawable/setting"
        android:orderInCategory="4"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/change"
        android:orderInCategory="2"
        android:title="改變"
        app:showAsAction="never" />
</menu>

菜單布局文件中的item 的showAsAction屬性,

  • always:總是顯示在界面上
  • never:不顯示在界面上议经,只讓出現(xiàn)在右邊的三個(gè)點(diǎn)中
  • ifRoom:如果有位置才顯示斧账,不然就出現(xiàn)在右邊的三個(gè)點(diǎn)中

在這補(bǔ)充下Android中菜單資源的相關(guān)知識(shí),

菜單資源文件必須放在res/menu目錄中煞肾。菜單資源文件必須使用<menu>標(biāo)簽作為根節(jié)點(diǎn)咧织。除了<menu>標(biāo)簽外,還有另外兩個(gè)標(biāo)簽用于設(shè)置菜單項(xiàng)和分組籍救,這兩個(gè)標(biāo)簽是<item>和<group>习绢。
<menu>標(biāo)簽沒(méi)有任何屬性,但可以嵌套在<item>標(biāo)簽中蝙昙,表示子菜單的形式闪萄。不過(guò)<item>標(biāo)簽中不能再嵌入<item>標(biāo)簽。

1.<item>標(biāo)簽的屬性含義如下:
- Id:表示菜單項(xiàng)的資源ID
- menuCategory:同種菜單項(xiàng)的種類奇颠。該屬性可取4個(gè)值:Container败去、system、secondary和alternative大刊。通過(guò)menuCategroy屬性可以控制菜單項(xiàng)的位置为迈。例如將屬性設(shè)為system,表示該菜單項(xiàng)是系統(tǒng)菜單缺菌,應(yīng)放在其他種類菜單項(xiàng)的后面葫辐。
- orderInCategor:同種類菜單的排列順序。該屬性需要設(shè)置一個(gè)整數(shù)值伴郁。例如menuCategory屬性值都為system的3個(gè)菜單項(xiàng)(item1耿战、item2和item3)。將這3個(gè)菜單項(xiàng)的orderInCategory屬性值設(shè)為3焊傅、2武福、1趋观,那么item3會(huì)顯示在最前面授帕,而item1會(huì)顯示在最后面巷查。
- title:菜單項(xiàng)標(biāo)題(菜單項(xiàng)顯示的文本)
- titleCondensed:菜單項(xiàng)的短標(biāo)題。當(dāng)菜單項(xiàng)標(biāo)題太長(zhǎng)時(shí)會(huì)顯示該屬性值
- icon:菜單項(xiàng)圖標(biāo)資源ID
- alphabeticShortcut:菜單項(xiàng)的字母快捷鍵
- numericShortcut:菜單項(xiàng)的數(shù)字快捷鍵
- checkable:表示菜單項(xiàng)是否帶復(fù)選框握巢。該屬性可設(shè)計(jì)為true或false
- checked:如果菜單項(xiàng)帶復(fù)選框(checkable屬性為true)晕鹊,該屬性表示復(fù)選框默認(rèn)狀態(tài)是否被選中。可設(shè)置的值為true或false
- visible:菜單項(xiàng)默認(rèn)狀態(tài)是否可視
- enable:菜單項(xiàng)默認(rèn)狀態(tài)是否被激活

-2.<group>標(biāo)簽的屬性含義如下:

   - id:表示菜單組的ID
   - menuCategory:與<item>標(biāo)簽的同名屬性含義相同溅话。只是作用域?yàn)椴藛谓M
   - orderInCategory:與<item>標(biāo)簽的同名屬性含義相同晓锻。只是作用域?yàn)椴藛谓M
   - checkableBehavior:設(shè)置該組所有菜單項(xiàng)上顯示的選擇組件(CheckBox或Radio Button)。如果將該屬性值設(shè)為all飞几,顯示CheckBox組件砚哆;如果設(shè)為single,顯示Radio Button組件屑墨;如果設(shè)為none躁锁,顯示正常的菜單項(xiàng)(不顯示任何選擇組件)。要注意的是
   - visible:表示當(dāng)前組中所有菜單項(xiàng)是否顯示绪钥。該屬性可設(shè)置的值是true或false
   - enable:表示當(dāng)前組中所有菜單項(xiàng)是否被激活灿里。該屬性可設(shè)置的值是true或false

然后在MainActivity.java中設(shè)置相關(guān)屬性:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar= (Toolbar) findViewById(R.id.id_toolbar);
        toolbar.setNavigationIcon(R.drawable.navigation_bar);//設(shè)置導(dǎo)航欄圖標(biāo)
        toolbar.setLogo(R.drawable.app_logo);//設(shè)置app logo
        toolbar.setTitle("Title");//設(shè)置主標(biāo)題
        toolbar.setSubtitle("Subtitle");//設(shè)置子標(biāo)題
        toolbar.inflateMenu(R.menu.menu_seting);//設(shè)置右上角的填充菜單
        //設(shè)置toorbar的左側(cè)導(dǎo)航欄圖標(biāo)點(diǎn)擊事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"導(dǎo)航欄圖標(biāo)",Toast.LENGTH_LONG).show();
            }
        });
       //設(shè)置右側(cè)填充菜單中的Item點(diǎn)擊事件
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()){
                    case R.id.cacle:
                        Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_LONG).show();
                        break;
                    case R.id.share:
                        Toast.makeText(MainActivity.this,"分享",Toast.LENGTH_LONG).show();
                        break;
                    case R.id.setting:
                        Toast.makeText(MainActivity.this,"設(shè)置",Toast.LENGTH_LONG).show();
                        break;
                    case R.id.change:
                        Toast.makeText(MainActivity.this,"改變",Toast.LENGTH_LONG).show();
                        break;
                    default:break;
                }
                return true;
            }
        });
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末关炼,一起剝皮案震驚了整個(gè)濱河市程腹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌儒拂,老刑警劉巖寸潦,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異社痛,居然都是意外死亡见转,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蒜哀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)斩箫,“玉大人,你說(shuō)我怎么就攤上這事撵儿〕丝停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵淀歇,是天一觀的道長(zhǎng)易核。 經(jīng)常有香客問(wèn)我,道長(zhǎng)浪默,這世上最難降的妖魔是什么牡直? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮纳决,結(jié)果婚禮上碰逸,老公的妹妹穿的比我還像新娘。我一直安慰自己阔加,他們只是感情好饵史,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般约急。 火紅的嫁衣襯著肌膚如雪零远。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天厌蔽,我揣著相機(jī)與錄音牵辣,去河邊找鬼。 笑死奴饮,一個(gè)胖子當(dāng)著我的面吹牛纬向,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戴卜,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逾条,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了投剥?” 一聲冷哼從身側(cè)響起师脂,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎江锨,沒(méi)想到半個(gè)月后吃警,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啄育,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年酌心,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挑豌。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡安券,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氓英,到底是詐尸還是另有隱情侯勉,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布债蓝,位于F島的核電站壳鹤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饰迹。R本人自食惡果不足惜芳誓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啊鸭。 院中可真熱鬧锹淌,春花似錦、人聲如沸赠制。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至烟号,卻和暖如春绊谭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汪拥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工达传, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迫筑。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓宪赶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脯燃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搂妻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 6,424評(píng)論 0 17
  • MaterialDesign是一套全新的界面設(shè)計(jì)語(yǔ)言,包含視覺(jué),運(yùn)動(dòng),互動(dòng)效果等特性. Design Suppor...
    小徐andorid閱讀 968評(píng)論 0 9
  • 不怕跌倒辕棚,所以飛翔 ToolBar ToolBar其實(shí)是一個(gè)ActionBar的變體,大大的擴(kuò)展了ToolBar,...
    筆墨Android閱讀 1,456評(píng)論 0 5
  • 轉(zhuǎn)載請(qǐng)說(shuō)明出處:Android開(kāi)發(fā)細(xì)節(jié)--查漏補(bǔ)缺(一):UI篇 引言:一開(kāi)始欲主,先和大家可能從最開(kāi)始接觸Andro...
    androidjp閱讀 1,119評(píng)論 0 9
  • 3.1. 介紹 現(xiàn)在,您已經(jīng)安裝了Wireshark并有可能熱衷于開(kāi)始捕捉您的第一個(gè)數(shù)據(jù)包坟募。在接下來(lái)的章節(jié)中岛蚤,我們...
    wwyyzz閱讀 1,388評(píng)論 0 1