在我们日常的开发当中,标题栏是必不可少的,所以我们在选择开发的时候要么自定义要么选择别人开发好的来进行使用。而google提供的有actionbar和toolbar。今天就来讲解一下toolbar的使用。
我们在toolbar的使用的时候更多的是遵循MaterialDesign中appbar的设计风格去使用。废话不多说看看如何一步步使用。
一:使用之前我们要知道AndroidStudio中如果你的Activity是继承AppCompatActivity的话,由于AppCompatActivity中自动绑定ActionBar所以需要我们把其隐藏再使用我们自己的toolbar来作为标题栏。所以第一步,隐藏Actionbar:
找到Application中使用的主题style如下:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
界面这样:
修改父辈主题:
<!-- 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>
界面这样:
二:在需要标题栏的xml文件中添加toolbar。
<android.support.v7.widget.Toolbar
android:id="@+id/tb"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"></android.support.v7.widget.Toolbar>
注意要使用supportv7当中的,不然只有5.0以上的版本才能使用。
并且在代码中加上:
tb = (Toolbar) findViewById(R.id.tb);
setSupportActionBar(tb);
替换AppCompatActivity中的Actionbar的位置
三:ToolBar中元素的使用。
网上看到的:
代码如下
tb = (Toolbar) findViewById(R.id.tb);
tb.setLogo(R.mipmap.ic_launcher);
tb.setNavigationIcon(R.mipmap.ic_launcher);
tb.setTitle("你好");
tb.setSubtitle("你好");
setSupportActionBar(tb);
效果图:
对menu的使用可能是最复杂的了,接下来介绍menu的使用;
①首先创建menu,r/menu/main
<?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/action_1"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="80"
android:title="111111"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_2"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="80"
android:title="22222"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_3"
android:icon="@mipmap/ic_launcher"
android:orderInCategory="80"
android:title="33333"
app:showAsAction="ifRoom" />
</menu>
在代码中加载menu资源,并且为toolbar添加监听;
加载menu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
添加监听:
Toolbar.OnMenuItemClickListener menuItemClickListener = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_1:
Toast.makeText(MainActivity.this, "111111", Toast.LENGTH_LONG).show();
break;
case R.id.action_2:
Toast.makeText(MainActivity.this, "222222", Toast.LENGTH_LONG).show();
break;
case R.id.action_3:
Toast.makeText(MainActivity.this, "333333", Toast.LENGTH_LONG).show();
break;
}
return false;
}
};
setSupportActionBar(tb);
tb.setOnMenuItemClickListener(menuItemClickListener);
注意:监听器的添加需要放在setSupportActionBar的后面才能起作用。
效果图:
注意:这里面的弹出框是可以自定义的(点击某个menu弹出框,而不是用系统的)。参考文章:http://blog.csdn.net/mchenys/article/details/51533689