ToolBar代替Actionbar在AppCompatActivity的使用

新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


 

在代码中转成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;
    }


为菜单内容设置菜单项:



    

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:

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

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

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

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




你可能感兴趣的:(Android,应用层开发)