UI-ToolBar 標(biāo)題欄


在開發(fā)中經(jīng)常需要使用到標(biāo)題欄,很多時(shí)候我們會(huì)自自定義一個(gè)標(biāo)題欄,因?yàn)樽远x標(biāo)題欄基本上就只需要使用個(gè)RelativeLayout就能實(shí)現(xiàn)。但是很多時(shí)候我們自己定義的標(biāo)題欄,總是顯得不夠規(guī)范,或者不夠優(yōu)雅。
下面將介紹使用ToolBar一步步實(shí)現(xiàn)上面的效果圖:

  1. 添加一個(gè)布局activity_toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:id="@+id/toolBar"
        />
</LinearLayout>
  1. 初始化ToolBar:
        toolbar=(Toolbar)findViewById(R.id.toolBar);
        toolbar.setTitle("我的行程"); //設(shè)置標(biāo)題
        toolbar.setSubtitle("SubTitle");// 設(shè)置子標(biāo)題
        toolbar.setLogo(R.mipmap.ic_launcher); //設(shè)置Logo

運(yùn)行下看看效果


為啥我的行程是黑色的顏色呢?如果我想設(shè)置成自己的顏色又該怎么辦呢?
那就再來一張圖:

由此我們可以看到是textColorPrimary這個(gè)屬性決定我們的Title的顏色,下面在我們的styles.xml中進(jìn)行修改:

    <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>

        <item name="android:textColorPrimary">@color/colorWhite</item>
    </style>

運(yùn)行:


  1. 添加導(dǎo)航按鈕:
        setSupportActionBar(toolbar); //這里注意為固定寫法
        toolbar.setNavigationIcon(R.mipmap.ic_arrow_back_white_24dp);//設(shè)置導(dǎo)航按鈕
  1. 添加右邊的圖標(biāo):
  • 新建一個(gè)menu文件, res/menu/menu_tb.xml
<?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/item_search"
        android:title="搜索" 
        android:icon="@mipmap/ic_search_white_24dp"
        app:showAsAction="ifRoom"/>
  <item android:id="@+id/item_delete"
        android:title="刪除"
        android:icon="@mipmap/ic_delete_white_24dp"
        app:showAsAction="ifRoom"/>
  <item android:id="@+id/item_info"
        android:title="信息"
        android:icon="@mipmap/ic_info_white_24dp"
        app:showAsAction="never"/>
  <item android:id="@+id/item_settings"
        android:title="設(shè)置"
        android:icon="@mipmap/ic_build_white_24dp"
        app:showAsAction="never"/>
</menu>

其中
android:title表示顯示menu的文本
android:icon表示顯示menu的圖標(biāo)
app:showAsAction表示顯示該item的策略,該屬性包含2個(gè)值 ifRoom/never
ifRoom表示如果空間足夠大就顯示,否則就隱藏
never表示不顯示,點(diǎn)擊3個(gè)點(diǎn)后才顯示出來

  • 在Activity中重寫onCreateOptionsMenu方法
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_tb,menu);//將menu_tb加載到menu中去
        return true;
    }

再來看看效果圖:



為毛最右邊的3個(gè)點(diǎn)是黑色的呢?從上面設(shè)置標(biāo)題字體的顏色,我們是否大概知道需要去哪設(shè)置了呢?
沒錯(cuò),還是styles.xml中修改。

  • 修改styles.xml中的android:textColorSecondary屬性:
<item name="android:textColorSecondary">@color/colorWhite</item>

變白了吧。
當(dāng)我們點(diǎn)擊3個(gè)點(diǎn)的時(shí)候,效果圖如下:



是不是覺得這個(gè)位置,以及背景顏色,字體顏色都不是很好看呢?

  • 設(shè)置彈窗框樣式
    在styles.xml中添加彈窗框樣式:
<style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
        <item name="android:colorBackground">#87CEFA</item>
        <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item> <!--新增一個(gè)item,用于控制menu-->
    </style>
    <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="overlapAnchor">false</item>  <!--把該屬性改為false即可使menu位置位于toolbar之下-->
    </style>

在toolbar的布局文件中添加

app:popupTheme="@style/ToolbarPopupTheme

運(yùn)行:


  1. 為菜單item添加點(diǎn)擊事件
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // do something...
                return true;
            }
        });
  1. 為導(dǎo)航按鈕添加返回父Activity功能
  • 在Manifest.xml中指定父Activity
<!-- android:parentActivityName 指定Navigation按鈕,返回的父Activity, 該屬性是在4.1中添加進(jìn)來的-->
        <activity android:name=".ToolBarActivity"
            android:parentActivityName=".MainActivity"
            />
        <!-- 指定Navigation按鈕,返回的父Activity,為了兼容4.1以下的版本-->
       <meta-data android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity"
            />
  • 在Activity的onCreate中設(shè)置ActionBar的導(dǎo)航欄按鈕允許返回父Acitivity
//獲取ActionBar
ActionBar bar=getSupportActionBar();
//允許返回指定的父Activity
bar.setDisplayHomeAsUpEnabled(true);

以上就是使用ToolBar的步驟

demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容