一个过时的组件---ActionBar

2016.12.14;
ActionBar的主要的作用就是保持整个app的页面的统一;
这里我们主要想说明一下就是如何让定制自己的ActionBar:
一般来说有两种方法:
1、通过setCustomView()来设置View来设置我们相应的ActionBar
2、通过继承系统的主题,来实现来自定义主题的形式,来实现ActionBar的定制

注意:
1、第一中方式我们需要将actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 设置为自定义模式,但是有一点要注意的就是,即使我们设置了自定义的模式,如果我们在ActionBar,上面如果我们设置了MenuItem的话,MenuItem是不会在我们的自定义的View里面的;
一个过时的组件---ActionBar_第1张图片
还有一点值得我们注意的就是,我们需要将title,icon,logo,homeAsUp的按钮我们需要让其隐藏,否则就会在我们的view之前显示,(当然如果有需要的话,是可以这样)

从上面的图我们可以看出来就是我们的通过setCustomView()来设置的View,即使我们在view里面的布局设置的是匹配父元素,这个view仍然不能填充满整个ActionBar这里的话,我们是解决的方案:

    ActionBar.LayoutParams params = new ActionBar.LayoutParams(
            ActionBar.LayoutParams.MATCH_PARENT,
            ActionBar.LayoutParams.MATCH_PARENT);
    actionBar.setCustomView(mView, params);

这样添加的方法就可以让我们的View填充满整个ActionBar了;

2、同样在第一种方式网上有很多人说左上角有一个左边距离,我们是没有办法消除的,这里的解决方案,比如下面:
这里写图片描述
我们给ImageView设置了一个状态选择器,但是,我们发现距离左边始终是有点距离的,我们可以将ImageView调大试一下,会发现仍然是存在这个边距的
解决方案:
在ImageView外层包裹一层LinearLayout就可以了,就会发现左边距就消失了
这里写图片描述
3、第二种方式修改样式:直接继承Theme.AppCompat.Light然后修改里面的主题的属性就可以了