V7-ToolBar的使用—替代actionbar

它用来代替ActionBar,但是比ActionBar更加灵活,相当于可以写在布局文件中的ActionBar;与DrawerLayout的使用的时候,DrawerLayout可以覆盖在ToolBar上,并且ToolBar和ActionBar不能同时使用

使用

隐藏actionbar

//先隐藏ActionBar,可以继承一个不带ActionBar的Theme,如:
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"

布局文件中引用

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            app:title="@string/app_name" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="#FFF"
        android:gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="我不是SlideMenu"
            android:textColor="@color/colorPrimary"
            android:textSize="30sp" />
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>

ToolBar替代ActionBar--在Activity中设置

/**
 * 设置toolbar
 */
private void setToolbar() {
    //替代actionbar
    setSupportActionBar(toolbar);
    //获取actionbar对象
    ActionBar actionBar = getSupportActionBar();
    actionBar.setTitle("应用详情");
    //设置ActionBar的home按钮可用---启用actionbar的home按钮可用
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayShowHomeEnabled(true);
}

toolBar.setTitle("ToolBar");//设置标题
toolBar.setNavigationIcon(iconRes);//设置图标
toolBar.setOnMenuItemClickListener();//设置Menu Item点击

设置actionbar的home按钮的点击事件

@Override
public boolean onOptionsItemSelected (MenuItem item){
    if (item.getItemId() == android.R.id.home) {
        //如果当前点击的是home按钮,才退出
        //直接写finish他暴力--因为actionbar上可能会有好多按钮
        finish();
    }
    return super.onOptionsItemSelected(item);
}

给actionbar添加菜单按钮

//添加菜单按钮
@Override
public boolean onCreateOptionsMenu (Menu menu){
    getMenuInflater().inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

+菜单按钮的布局

<?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/search"
        android:enabled="true"
        android:icon="@drawable/ic_about"
        android:title="搜索"
        app:showAsAction="always" />
</menu>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容