ActionBar的使用,设置和自定义

前言

ActionBar是我们google在3.0以后推出的推荐使用的标题栏,它灵活多变,非常好用,现在我们就来一起学习下吧。

配置主题

要想使用ActionBar,必须在主题里配置使用ActionBar的主题(可以在单个的Activity中配置,也可以在Application中配置),@style/Theme.AppCompat的子类,除了NoActionBar的,或者直接使用系统默认的AppTheme

xml文件配置

ActionBar的使用,设置和自定义_第1张图片

id,不用说了

title是设置选项的名字

showAsAction是定义此item在ActionBar中的位置,常用的有

  • never 永远不会在标题栏上直接显示,必须手动点击菜单才会显示
  • ifRoom 如果有空间就会在标题栏上显示,如果没有就需要手动点击菜单才会显示
  • always 永远都在标题栏显示
    这里需要说一下:标题栏的菜单按钮,如果你的手机没有自带菜单按钮,那么在标题栏的最右边就会有3个竖直排列的小点;如果你的手机自带了,那么菜单按钮就是你手机上自带的那个
    ####orderInCategory:决定每个Item的次序

代码中加载菜单文件

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

代码中设置点击事件

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId){
            case R.id.setting1:
                Toast.makeText(NormalActionBarActivity.this, "设置1", Toast.LENGTH_SHORT).show();
                break;
            case android.R.id.home:
                Toast.makeText(NormalActionBarActivity.this, "我是Home", Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

android.R.id.home是系统默认的最左边的图标

在代码中设置ActionBar

ActionBar supportActionBar = getSupportActionBar();
        if (supportActionBar == null) {
            return;
        }
        supportActionBar.setTitle("标题");//设置标题
        supportActionBar.setIcon(R.mipmap.ic_launcher);//设置图标
        supportActionBar.setDisplayShowTitleEnabled(true);//是否隐藏标题
        supportActionBar.setDisplayShowHomeEnabled(true);  //是否隐藏左侧的图标
        supportActionBar.setDefaultDisplayHomeAsUpEnabled(true);
        //是否隐藏最左边的返回键,在API23上我没有显示出来,也不知道为什么

注意:如果你的Activity继承的是ActionBarActivity或者是AppCompatActivity那么就要getSupportActionBar(),否则获取不到ActionBar

自定义标题栏

ActionBar提供了自定义标题栏样式的方法,而且也非常简单

mActionbar.setCustomView(R.layout.activity_middleactionbar);
mActionbar.setDisplayShowCustomEnabled(true);        mActionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

你只需要写好布局文件就可以得到你想要的样式了

鉴别是否是ActionBar的方法

长按标题栏的按钮,如果会弹出提示框,那么就是ActionBar;如果没有那么就是自定义的布局

结语

应该是我第一次写原创的文章吧,写得不好多多见谅,可以留言提问。另外,希望看到的人都来写博客吧,对自己可以加深理解,还可以方便他人。

你可能感兴趣的:(widget)