ToolBar代替Actionbar在AppCompatActivity的使用

本文介绍如何在Android项目中使用AppCompatActivity与Toolbar替代ActionBar。通过设置主题、布局及代码实现,展示如何定制化标题栏样式及功能。

新api推荐带ActionBar的Activity,继承AppCompatActivity 处理标题栏

导入项目工具包。兼容包:

 compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v13:23.3.0'

1 .需要给Activity设置主题 无Actionbar即可

  android:theme="@style/Theme.AppCompat.Light.NoActionBar">

2.用toolbar代替Actionbar

<android.support.v7.widget.Toolbar
    android:id="@+id/bmtool_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
 </android.support.v7.widget.Toolbar>

在代码中转成Actionbar:

    tb= (android.support.v7.widget.Toolbar) findViewById(R.id.bmtool_bar);
        setSupportActionBar(tb);

获取Actionbar:(这里给Actionbar设置了一个home id的属性)

ActionBar ab=getSupportActionBar();
        if(ab!=null){
            ab.setHomeAsUpIndicator(R.drawable.menu_home);
            ab.setDisplayHomeAsUpEnabled(true);
        }

因为Toolbar 已经加入到Activity 中了,因此选项菜单布局,是可以显示到标题栏中的!:

public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater menuInflater=getMenuInflater();
            menuInflater.inflate(R.menu.menu_main,menu);
        return true;
    }


为菜单内容设置菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.cuizehui.Actitys.HomeActivity">

    <item android:id="@+id/more"
        android:title="更多"
        android:icon="@drawable/ic_drag"
        app:showAsAction="always"
        android:orderInCategory="100"/>

</menu>

3为标题栏设置点击事件:

 public boolean onOptionsItemSelected(MenuItem item) {

         switch(item.getItemId()){
            case R.id.more:
                 mMenuDialogFragment.show(fragmentManager,ContextMenuDialogFragment.TAG);//这是一个插件!!
                 break;
             case android.R.id.home:
                 finish();
         }
        return super.onOptionsItemSelected(item);
    }

(android.R.id.home 这个ID 对应上面为Actionbar设置home id 的方法和图标)

最后 写一个复用性高的toolbar:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimaryDark"
    app:titleTextColor="@android:color/white"
    android:fitsSystemWindows="true"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

如果没有设置主题,并使用的是AppCompatActivity

那么可以直接使用activity所使用的actionBar

    android.support.v7.app.ActionBar mActionBar=getSupportActionBar();
        if(mActionBar!=null){
            mActionBar.hide();
        }

可通过如上方式设置actionBar是否存在并设置样式。




评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值