上一篇簡單的介紹瞭如何簡單使用Toolbar,這篇主要介紹Toolbar的進一步設置。
既然Toolbar要替代ActionBar,那麼Toolbar的功能應該更爲強大,在Toolbar上有一些默認的顯示效果,先來看下。
通過上圖,不難看出,我們其實是可以爲Toolbar設置以下屬性的:
- 上級按鈕 (upbutton) setNavigationIcon
- APP 的圖標 setLogo
- 主標題 setTitle
- 副標題 setSubtitle
- 設定菜單各按鈕的動作 setOnMenuItemClickListener
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setNavigationIcon(R.drawable.ic_launcher);
toolbar.setTitle(getResources().getString(R.string.app_name));
toolbar.setSubtitle("ToolBar");
toolbar.setOnMenuItemClickListener(this);
toolbar.setTitleTextColor(0xffffffff);
toolbar.setSubtitleTextColor(0xffffffff);
注意:setNavigationIcon(),setOnMenuItemClickListener() 需要放在 setSupportActionBar之後纔會生效
Toolbar菜單效果與ActionBar的實現一樣,都是OptionsMenu。需要在Menu中添加 item ,然後通過Toolbar顯示出來。
res/menu/menu_main.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=".MainActivity">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
android:icon="@drawable/ic_launcher"
app:showAsAction="always" />
<item
android:id="@+id/action_test"
android:title="@string/action_settings"
android:orderInCategory="10"
android:icon="@drawable/ic_launcher"
app:showAsAction="ifRoom" />
</menu>
然後在MainActivity中添加以下代碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
Toast.makeText(this, menuItem.getTitle(), Toast.LENGTH_SHORT).show();
return false;
}
運行效果如下:
通過點擊 菜單,可以發現能夠觸發 onMenuItemClick() 方法,但是,點擊上級按鈕 (upbutton)並沒有觸發該事件,因爲它有自己獨立的點擊事件。
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "HOME", Toast.LENGTH_SHORT).show();
}
});