Toolbar使用详解

来源:互联网 发布:色戒 梁朝伟 知乎 编辑:程序博客网 时间:2024/06/14 06:19

使用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;    }
原创粉丝点击