使用ToolBar需要设置三点:
1.添加依赖库:
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
2.activity需要继承AppCompatActivity
3.在AndroidManifest.xml文件中,设置元素使用appcompat中的某个NoActionBar主题,从而来去除使用ActionBar来提供操作栏。
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
好了,现在开始使用.
首先,在布局文件中加入ToolBar标签.
<android.support.v7.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
/>
下面来看代码:
public class MainActivity extends AppCompatActivity {
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mToolbar = (Toolbar) findViewById(R.id.tool_bar);
//把ToolBar设置上去
setSupportActionBar(mToolbar);
// 显示应用的Logo
getSupportActionBar().setDisplayShowTitleEnabled(true);//是否显示title(为true会显示项目的label名称,下边的setTitle方法不生效;为false下边的setTitle方法生效)
getSupportActionBar().setDisplayUseLogoEnabled(true);//是否显示logo
getSupportActionBar().setLogo(R.mipmap.ic_launcher);//设置logo图标
// 设置标题和子标题
mToolbar.setTitle("ToolBarDemo");
mToolbar.setSubtitle("二级标题");
// 显示导航按钮(左侧侧滑抽屉按钮)
mToolbar.setNavigationIcon(R.mipmap.ic_launcher);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "hah", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.toolbar_action1 :
Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show();
break;
case R.id.toolbar_action2:
Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
res下新建menu文件夹,新建文件menu_toolbar.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/toolbar_action1"
android:icon="@mipmap/ic_launcher_round"
android:title="Action1"
app:showAsAction="never"/>
<item
android:id="@+id/toolbar_action2"
android:icon="@mipmap/ic_launcher_round"
android:title="Action2"
app:showAsAction="never"/>
</menu>
先上效果图:
代码中onOptionsItemSelected设置的是右侧弹出框的点击事件.
在menu_toolbar中,设置的item有个属性为app:showAsAction
对应的属性有三个:never,always,ifRoom.
设置为alway表示item的图标一直在toolbar上,效果图如下:
如果设置为ifRoom表示如果ToolBar上有空间就放在ToolBar上,如果为never就表示不放在ToolBar上,never效果图如下:
返回键的设置:
设置左侧菜单键开启:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
重写onSupportNavigateUp()方法:
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}