什么是ToolBar
ToolBar是Android在5.0开始推出的导航控件,是用来取代以前的ActionBar的。ToolBar比ActionBar灵活许多。简单的说,可以吧ToolBar当作一个新的控件来使用。并且ToolBar的自定义程度更高。
使用ToolBar
为了向下兼容,通常使用兼容库中的ToolBar。添加兼容库之后就可以开始i使用ToolBar了。首先要在XML中设置NoActionBar的主题。然后在布局代码中添加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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:context="com.swpuiot.secondarytradingplatformv20.ToolBarActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_tool_bar" />
</LinearLayout>
这个时候启动活动就可以看的到导航栏了,这个导航栏是ToolBar而不是以前的ActionBar了。然后在Activity中找到ToolBar控件,就可以进行很多操作。
public class ToolBarActivity extends AppCompatActivity {
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_bar);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);//用toolbar取代以前的actionBar
toolbar.setTitle("我是标题");
toolbar.setNavigationIcon(R.mipmap.ic_launcher);//导航图标
toolbar.setSubtitle("我是小标题");
toolbar.setLogo(R.mipmap.ic_launcher);//Logo
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(ToolBarActivity.this, "You Click NavigationIcon", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//这个方法是用来设置点击事件的
switch (item.getItemId()) {
case R.id.menu_clock:
Toast.makeText(ToolBarActivity.this, "You Click clock", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_listen:
Toast.makeText(ToolBarActivity.this, "You Click Listen", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//系统会调用这个方法来初始化菜单
getMenuInflater().inflate(R.menu.menu_test,menu);
return true;
}
}
添加menu按钮的时候需要在res/menu下创建资源文件
<?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"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ToolBarActivity">
<item
android:id="@+id/menu_clock"
android:title="clock"
android:icon="@drawable/menu_clock"
app:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/menu_listen"
android:title="listen"
android:icon="@drawable/ic_action_name"
app:showAsAction="ifRoom|withText"
/>
</menu>