Toolbar的简单使用方法

什么是Toolbar?

Toolbar是google在android5.0之后推出的一个 Material Design风格的导航栏,用来取代之前的Actionbar.相比于Actionbar,Toolbar可以很简单的设置图标,主标题,子标题,返回键,菜单栏等按键。Toolbar更多的应用在和其他的Matrial Design组件中,如结合CollapsingToolbarLayout实现动态隐藏Toolbar、结合侧滑菜单栏等。

开发准备

Toolbar是在android.support.v7包中的,所以我们要在Android studio中的build.gradle导入V7包

compile ‘com.android.support:appcompat-v7:24.2.0’


布局文件引入Toolbar

在布局文件中引入Toolbar和引入其他简单组件一样,非常简单,activity_toolbar如下。


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    android.support.v7.widget.Toolbar>
LinearLayout>

布局内容和平常的一样,layout_height的值?attr/actionBarSize是actionbar的标准长度

android:background=”?attr/colorPrimary”设置Toolbar背景颜色,值是标准的状态栏背景色蓝色。

app:theme=”@style/ThemeOverlay.AppCompat.Dark.ActionBar”>设置toolbar的样式,也可以不设置。不设置的话标题颜色是黑色,比较难看,一般的状态栏颜色的字体是白色。

注意事项1:使用Toolbar的时候要隐藏掉系统本身的状态栏,这里我在androidmanifest文件中指定了该activity的them是无标题的Theme.AppCompat.Light.NoActionBar样式。你也可以在Activity中用代码去实现隐藏标题栏


代码设置标题、图标、菜单

public class ToolbarActivity extends AppCompatActivity {

    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_toolbar);

        toolbar = (Toolbar) findViewById(R.id.toolbar);

        toolbar.setTitle("主标题");
        setSupportActionBar(toolbar);
    }
}

以上代码也非常简单,只是设置了标题而已,让我们来看看效果


Toolbar的简单使用方法_第1张图片

可以看到,一个只设置了主标题的Toolbar,很简陋,但是Toolbar的操作不仅仅这些,我们来添加返回键,菜单栏,副标题,如图。

Toolbar的简单使用方法_第2张图片

先呈上layout/menu/toolbar_menu.xml下的菜单布局


<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/share"
        android:title="ic_share"
        android:icon="@drawable/ic_photo_share"
        app:showAsAction="ifRoom"
        />



    <item
        android:id="@+id/item01"
        android:title="item01"
        app:showAsAction="never"
        />

    <item
        android:id="@+id/item02"
        android:title="item02"
        app:showAsAction="never"
        />

menu>

app:showAsAction设置为ifRoom是将这个按键显示到toolbar中,设置为never则是把这个item隐藏隐藏在最右边的菜单键里


设置副标题,返回键,menu监听器

public class ToolbarActivity extends AppCompatActivity {

    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_toolbar);

        toolbar = (Toolbar) findViewById(R.id.toolbar);

        toolbar.setTitle("主标题");
        toolbar.setSubtitle("副标题");
        toolbar.setLogo(R.mipmap.ic_launcher);
        //设置SupportActionBar
        setSupportActionBar(toolbar);



        //快速设置返回键,返回键的逻辑在下面的onOptionsItemSelected中编写
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        //也可以使用toolbar.setNavigationIcon(//图片)定义自己的返回键图片,逻辑还是在onOptionsItemSelected中编写


    }

    //加载menu下编写好的菜单栏
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar_menu,menu);
        return true;
    }

    //在这里编写菜单的点击监听
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        switch (id){
            //android.R.id.home是返回键
            case android.R.id.home:
                onBackPressed();
                break;
            case R.id.share:
                Toast.makeText(ToolbarActivity.this, "share", Toast.LENGTH_SHORT).show();
                break;
            case R.id.item01:
                Toast.makeText(ToolbarActivity.this, "item01", Toast.LENGTH_SHORT).show();
                break;
            case R.id.item02:
                Toast.makeText(ToolbarActivity.this, "item02", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}

可以看到,编写好的toolbar_men.xml在重写方法onCreateOptionsMenu(Menu menu)去载入,监听逻辑则是在 onOptionsItemSelected(MenuItem item)中编写。

总结:

1、在布局文件中引入toolbar

2、在java文件里使用各种set方法设置图标、标题等

3、如果要增加菜单栏,则在layout\menu下编写,在Activity中载入、编写点击逻辑

你可能感兴趣的:(安卓学习)