要使用 Toolbar,首先要在 layout 裏面添加組件,例如在 activity_main.xml 裏添加java
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" />
而後修改該 Activity 的樣式,禁用其 ActionBar
android
<style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>
最後再 Activity 代碼中設置該 Toolbar 爲 ActionBarapp
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
至此,一個簡單的自定義 ActionBar 就完成了。ide
若是想 修改導航按鈕 的圖標,只須要在 Layout 文件中爲 Toolbar 增長屬性 app:navigationIcon 便可ui
<android.support.v7.widget.Toolbar android:id="@+id/id_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" app:navigationIcon="@mipmap/back_icon" />
注意:若是要在代碼裏設置 icon 屬性,須要在 setSupportActionBar() 方法以後執行,不然修改無效code
爲導航按鈕添加點擊處理xml
toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO } });
若是想 修改標題樣式,如改爲居中,須要清空默認標題,並添加自定義標題。ip
首先,在 layout 文件中 增長 TextView 用於顯示文字內容,以下get
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" app:navigationIcon="@mipmap/back_icon"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:text="tonglei0429" android:textSize="18dp" /> </android.support.v7.widget.Toolbar>
而後,清空原 toolbar 標題string
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(""); setSupportActionBar(toolbar);
若是想修改右側菜單項,能夠修改 menu.xml 同 ActionBar 處理方式同樣,如 menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.narennetwork.travel.ui.ToursActivity"> <item android:id="@+id/action_add" android:orderInCategory="100" android:title="@string/action_add" android:icon="@mipmap/add_icon" app:showAsAction="always" /> </menu>
app:showAsAction 屬性決定該菜單項在合適被合併到 overflow (...) 裏,always表明始終顯示,never表明始終合併,ifRoom表明根據屏幕空間自動調整
android:orderInCategory 表明其優先級,即收入 Overflow 裏的順序
爲菜單項添加點擊處理
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_tour_publisher, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_add) { // TODO } return super.onOptionsItemSelected(item); }