Toolbar使用详解

使用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;
    }

猜你喜欢

转载自blog.csdn.net/huchengzhiqiang/article/details/78083488