Toolbar官网地址 https://developer.android.com/reference/android/widget/Toolbar.html
本文记录了在androidstudio中如何添加Toolbar的步骤。
1 将com.android.support:design库添加到模块依赖
2 在res/values/styles.xml中修改AppTheme样式,如下:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="actionMenuTextAppearance">@style/ToolbarMenuTextSize</item>
<item name="android:textColorPrimary">@android:color/holo_red_light</item>
</style>
在AndroidManifest.xml中更改application的样式android:theme="@style/AppTheme"
3 res/layout/activity_main.xml ,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:toolbar="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/color_0176da">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</android.support.v7.widget.Toolbar>
</LinearLayout>
MainActivity.java
package com.androidpractice.toolbardemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setLogo(getResources().getDrawable(R.mipmap.ic_launcher));
toolbar.setTitle("Title");
toolbar.setSubtitle("Subtitle");
toolbar.setNavigationIcon(R.mipmap.ic_launcher);
toolbar.inflateMenu(R.menu.base_toolbar_menu); //no use
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int menuItemId = item.getItemId();
if (menuItemId == R.id.action_item1) {
Toast.makeText(MainActivity.this , R.string.item_01 , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item2) {
Toast.makeText(MainActivity.this , R.string.item_02 , Toast.LENGTH_SHORT).show();
} else if (menuItemId == R.id.action_item3) {
Toast.makeText(MainActivity.this , R.string.item_03 , Toast.LENGTH_SHORT).show();
}
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.base_toolbar_menu, menu);
return true;
}
}
4 添加菜单文件res/menu/base_toolbar_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=".MainActivity">
<item android:id="@+id/action_item1"
android:title="@string/item_01"
android:orderInCategory="80"
android:icon="@drawable/ic_launcher"
app:showAsAction="ifRoom" />
<item android:id="@+id/action_item2"
android:title="@string/item_02"
android:orderInCategory="90"
android:icon="@drawable/ic_launcher"
app:showAsAction="ifRoom" />
<item android:id="@+id/action_item3"
android:title="@string/item_03"
android:orderInCategory="100"
app:showAsAction="never"/>
</menu>
5 最后添加缺少的资源文件,如下:
res/values/colors.xml中增加<color name="color_0176da">#0176da</color>
res/values/strings.xml 中增加
<string name="item_01">item_01</string>
<string name="item_02">item_02</string>
<string name="item_03">item_03</string>
我遇到的问题:
我一开始通过调用Toolbar的方法toolbar.inflateMenu(R.menu.base_toolbar_menu); 方法加载menu布局,运行起来并没有看到溢出菜单。
最后通过在onCreateOptionsMenu(Menu menu)中添加实现了。所以inflateMenu我感觉好像没有什么用处。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.base_toolbar_menu, menu);
return true;
}
参考资源
http://www.vogella.com/tutorials/AndroidActionBar/article.html
Toolbar添加中遇到的坑 点击打开链接
我遇到的问题是通过方法无法设置溢出菜单,参考文档点击打开链接
Material icons 点击打开链接