Toolbar

setHomeButtonEnabled这个小于4.0版本的默认值为true的。


但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击  false 不可以点击。


actionBar.setDisplayHomeAsUpEnabled(true)

// 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP

actionBar.setDisplayShowHomeEnabled(true)

//使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,否则,显示应用程序图标,对应id为 android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME

actionBar.setDisplayShowCustomEnabled(true)

// 使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用,对应 ActionBar.DISPLAY_SHOW_CUSTOM

actionBar.setDisplayShowTitleEnabled(true)

//对应ActionBar.DISPLAY_SHOW_TITLE。

其中setHomeButtonEnabled和setDisplayShowHomeEnabled共同起作用,

如果setHomeButtonEnabled设成false,

即使setDisplayShowHomeEnabled设成true,图标也不能点击

点击事件处理

setSupportActionBar(mCommodityToolbar);//设置使用Toolbar

getSupportActionBar().setDisplayHomeAsUpEnabled(true);//添加返回按钮

getSupportActionBar().setDisplayShowTitleEnabled(false);//自定义了Title后不再显示默认标题

mCommodityToolbar.setNavigationOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) { finish(); }});//点击返回

mCommodityToolbar.setTitle(null);



Toolbar设置toggle

Toolbar_第1张图片

toolbar设置按钮颜色

toolbar的xml中先引用style

```

    app:theme="@style/toolBar_btn_style"

```

创建该style

```

#ffffff

```



动态更新Toolbar Menu以及Menu中同时显示文字和图标

我们经常会有这样的需求,在切换Fragment或者点击某个按钮后动态更新Toolbar上Menu项.但是onCreateOptionsMenu方法只在创建Activity的时候调用一次,以后就不再调用了,所以就不能在onCreateOptionsMenu中做处理了。

不过系统提供了另外的一个方法onPrepareOptionsMenu,我们可以在这个方法中做一些逻辑处理,然后在需要更新Menu的地方调用invalidateOptionsMenu方法。

```

@Override public boolean onCreateOptionsMenu(Menu menu){

        getMenuInflater().inflate(R.menu.menu, menu);

        return super.onCreateOptionsMenu(menu);

    }

@Override public boolean onPrepareOptionsMenu(Menu menu){

        if (mIsEditStatus) {

            menu.findItem(R.id.action_share).setVisible(false);

            menu.findItem(R.id.action_edit).setVisible(true);

        } else {

            menu.findItem(R.id.action_share).setVisible(true);

            menu.findItem(R.id.action_edit).setVisible(false);

        }

        return super.onPrepareOptionsMenu(menu);

    }

invalidateOptionsMenu(); //重新绘制menu

```

另外的一个需求是在Menu中要显示图标和文字,虽然在menu.xml文件中配置了图标和文字,但是在有图标的情况下文字是不会显示的,即使设置 app:showAsAction="always|withText" 但是我在运行的时候发现并没有显示文字,处理方法是通过另外一个属性实现app:actionLayout.

首先menu.xml定义如下:

Toolbar_第2张图片
app:actionLayout指向了一个布局,可以在这个布局中定义你想要的控件。比如一个textView

然后还要在onCreateOptionsMenu中重写一下Menu的点击事件,现在onCreateOptionsMenu方法是这样的:

```

@Override public boolean onCreateOptionsMenu(Menu menu){

        getMenuInflater().inflate(R.menu.menu, menu);

        final MenuItem item = menu.findItem(R.id.action_edit);

        item.getActionView().setOnClickListener(new View.OnClickListener() {

            @Override            public void onClick(View v){

                onOptionsItemSelected(item);

            }

        });

        return super.onCreateOptionsMenu(menu);

    }

```



各种样式修改(颜色样式等)

https://www.cnblogs.com/oyjt/p/4762640.html

你可能感兴趣的:(Toolbar)