Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,两者不是独立关系,要使用Toolbar还是得跟ActionBar扯上关系的。相比Actionbar 来说,Toolbar最明显的一点就是变得很自由,可随处放置,因为它是作为一个ViewGroup来定义使用的,所以单纯使用ActionBar已经稍显过时了,它的一些方法已被标注过时。
toolbar出来这么长时间,今天是真正的去使用它,遇到了一些问题,在此记录一下。
首先先说个简便一点的方法,创建一个Basic Activity,所有代码都已经内置好了,只需要修改就可以实现功能。创建出来的toolbar是这个样子的,
下面对toolbar进行修改,首先获得toolbar,然后设置其标题,返回按钮,菜单等内容。
先贴出对toolbar的设置代码:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//设置标题等内容时一定要在setSupportActionBar(toolbar);之前设置,否则不会生效
toolbar.setSubtitle("123");`
toolbar.setTitle("123");`
setSupportActionBar(toolbar);`
//设置toolbar显示返回按钮`
getSupportActionBar().setDisplayHomeAsUpEnabled(true);`
//设置按钮图标,如果不设置则显示返回按钮图标`
toolbar.setNavigationIcon(R.mipmap.ic_launcher);`
下面设置返回按钮的点击事件:
toolbar.setNavigationOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v,"back",Snackbar.LENGTH_LONG)
.setAction("back", null).show();
}
});```
toolbar中常用的还有一个知识点 就是menu。toolbar中设置menu:
(如果不想设置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.menu_main,menu);
return true;
}
设置menu的点击事件:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
intid = item.getItemId();
//noinspection SimplifiableIfStatement
if(id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
最后来看下menu.xml文件:
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.yyf.okhttpdemo.MainActivity">
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
android:id="@+id/action_settings1"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="ifRoom"/>
这里的menu设置了两个item,其中一个显示在toolbar上,一个隐藏在menu中,主要设置是app:showAsAction="ifRoom"
app:showAsAction=""有四个属性,分别是
1.alaways:这个值会使菜单项一直显示在ActionBar上。
2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。
3.never:这个值菜单永远不会出现在ActionBar是。
4.withText:这个值使菜单和它的图标,菜单文本一起显示。