什么是Toolbar? Toolbar是google在android5.0之后推出的一个 Material Design风格的导航栏,用来取代之前的Actionbar.相比于Actionbar,Toolbar可以很简单的设置图标,主标题,子标题,返回键,菜单栏等按键。Toolbar更多的应用在和其他的Matrial Design组件中,如结合CollapsingToolbarLayout实现动态隐藏Toolbar、结合侧滑菜单栏等。 开发准备 Toolbar是在android.support.v7包中的,所以我们要在Android studio中的build.gradle导入V7包 compile ‘com.android.support:appcompat-v7:24.2.0’ 布局文件引入Toolbar 在布局文件中引入Toolbar和引入其他简单组件一样,非常简单,activity_toolbar如下。 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_toolbar"
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="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</android.support.v7.widget.Toolbar>
</LinearLayout>
布局内容和平常的一样,layout_height的值?attr/actionBarSize是actionbar的标准长度 android:background=”?attr/colorPrimary”设置Toolbar背景颜色,值是标准的状态栏背景色蓝色。 app:theme=”@style/ThemeOverlay.AppCompat.Dark.ActionBar”>设置toolbar的样式,也可以不设置。不设置的话标题颜色是黑色,比较难看,一般的状态栏颜色的字体是白色。 注意事项1:使用Toolbar的时候要隐藏掉系统本身的状态栏,这里我在androidmanifest文件中指定了该activity的them是无标题的Theme.AppCompat.Light.NoActionBar样式。你也可以在Activity中用代码去实现隐藏标题栏 代码设置标题、图标、菜单 public class ToolbarActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toolbar);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("主标题");
setSupportActionBar(toolbar);
}
}
以上代码也非常简单,只是设置了标题而已,让我们来看看效果 Toolbar的简单使用方法 可以看到,一个只设置了主标题的Toolbar,很简陋,但是Toolbar的操作不仅仅这些,我们来添加返回键,菜单栏,副标题,如图。 Toolbar的简单使用方法 先呈上layout/menu/toolbar_menu.xml下的菜单布局 <?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/share"
android:title="ic_share"
android:icon="@drawable/ic_photo_share"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/item01"
android:title="item01"
app:showAsAction="never"
/>
<item
android:id="@+id/item02"
android:title="item02"
app:showAsAction="never"
/>
</menu>
app:showAsAction设置为ifRoom是将这个按键显示到toolbar中,设置为never则是把这个item隐藏隐藏在最右边的菜单键里 设置副标题,返回键,menu监听器 public class ToolbarActivity extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toolbar);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("主标题");
toolbar.setSubtitle("副标题");
toolbar.setLogo(R.mipmap.ic_launcher);
//设置SupportActionBar
setSupportActionBar(toolbar);
//快速设置返回键,返回键的逻辑在下面的onOptionsItemSelected中编写
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//也可以使用toolbar.setNavigationIcon(//图片)定义自己的返回键图片,逻辑还是在onOptionsItemSelected中编写
}
//加载menu下编写好的菜单栏
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu,menu);
return true;
}
//在这里编写菜单的点击监听
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
//android.R.id.home是返回键
case android.R.id.home:
onBackPressed();
break;
case R.id.share:
Toast.makeText(ToolbarActivity.this, "share", Toast.LENGTH_SHORT).show();
break;
case R.id.item01:
Toast.makeText(ToolbarActivity.this, "item01", Toast.LENGTH_SHORT).show();
break;
case R.id.item02:
Toast.makeText(ToolbarActivity.this, "item02", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
可以看到,编写好的toolbar_men.xml在重写方法onCreateOptionsMenu(Menu menu)去载入,监听逻辑则是在 onOptionsItemSelected(MenuItem item)中编写。 总结: 1、在布局文件中引入toolbar 2、在java文件里使用各种set方法设置图标、标题等 3、如果要增加菜单栏,则在layout\menu下编写,在Activity中载入、编写点击逻辑