Toobar主要是用来替换ActionBar的,换句话说,ActionBar能做的,Toolbar都能做。如果你对ActionBar的使用比较熟悉,你会发现Toolbar使用起来非常简单。既然是替换,当然用Toolbar的时候就得先去把ActionBar给隐藏掉.
隐藏ActionBar的方法有很多,可以通过代码的方式隐藏,也可以通过配置文件的方式,我们主要是通过配置文件的方式来隐藏。在我们的styles.xml文件中的AppTheme标签中加入如下两行:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
当然了,你也可以新建一个<style>
标签,将上面两行代码加入,并且将这个新建的标签作为<application>
的theme。还可以选择通过将AppTheme的parent设置为Theme.AppCompat.Light.NoActionBar的方式。方法很多,可以自己随便选。
接下来就是将Toolbar放入到布局文件
<!--?attr/actionBarSize 自动匹配toobar的高度-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:layout_height="?attr/actionBarSize" />
最后将Toobar作为“ActionBar”来用
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//设置标题文字
toolbar.setTitle("巅峰榜 流行指数 第64天");
setSupportActionBar(toolbar);
// 显示返回箭头
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//修改图标
//getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_search);
添加操作按钮和 action overflow 中其他可用的条目,通过在项目的 res/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/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom" />
<!-- 设置, 在溢出菜单中展示 -->
<item
android:title="@string/action_settings"
android:id="@+id/action_settings"
app:showAsAction="never" />
</menu>
添加活动视图 Action View:
1、直接指定Android系统中的SearchView控件,如上面的代码:app:actionViewClass="android.support.v7.widget.SearchView"
2、我们可以在menu的布局文件使用中来自定义searchview布局,如代码:android:actionLayout="@layout/searchview"
要为 toolbar 布局菜单条目,就要在 activity 中实现 onCreateOptionsMenu() 回调方法来 inflate 菜单资源从而获取 Menu 对象
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_menu,menu);
//获取searchView findviewbyid
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
item点击事件的处理
@Override
public boolean onOptionsItemSelected(MenuItem item) {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home: //返回按钮
onBackPressed();
break;
case R.id.action_settings:
Toast.makeText(SecondActivity.this,"点击了设置",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}