这是我的第一篇博客,之前没有正式写过博客,一直想尝试着学着写一点东西,不管是利己还是利人,写的不好大家不要喷
最近写项目遇到一些问题关于actiobar布局不能填满actionbar的问题
下面我就来说一说我从遇到这个问题一直到解决问题的过程,希望能帮助遇到和我一样问题的童鞋,也给自己做一个标记
做项目前都是用布局代码<include ……/>来添加每个activity的标题,也没感觉有什么不方便,直到后台偶然看到一个封闭得很好的app源码是把应用的标题放在公共activity中使
用,其中用到了一个我以前没用过的东西——actionbar,我这人看到技术上的新东西总是喜欢去看看自己能不能拿来用,于是开始随便做一个demo来测试actionbar。
先写了个类继承ActionBarActivity,刚写上去就发现已经被废弃了提示改成AppCoompatActivity,看了AppCoompatActivity的源码只是减少了ActionBarActivity的一层继承而已,这没
什么问题,继续进行。参照看到的资源把以下代码添加进我的demo
actionBar = getSupportActionBar();添加进去后成功运行,没有崩这让我感到很幸运,有一点点成就感。由于多看了界面一会发现actionbar有边框,我写的布局没有填满,瞬间就感觉很奇葩,我没有写边距怎么会出现 这种情况。
LayoutInflater inflator = getLayoutInflater();
View topbar = inflator.inflate(R.layout.activity_main,null);
ActionBar.LayoutParams param = new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
actionBar.setCustomView(topbar, param);
actionBar.setDisplayShowCustomEnabled(true);
很是纳闷,然后网上找各种解决办法
总结了下网上的解决办法有以下几种
1.重写style属性
2.在加载布局文件的时候new一个新
LinearLayout
View actionBarButtons = inflater.inflate(R.layout.edit_event_custom_actionbar,
new
LinearLayout(mContext),
false
);
试过这些方法无果后又回到我的代码上找原因,担心是不是无意间设置了什么属性导致,结果还是没办法
对比了某位大神的代码后发现他用的v7包是19的,而我的是22的,估计原因出在这里,于是我把v7包换成19的,果不其然,问题果然解决了
这种方法解决了却不能让我满意,新的包怎么可能比老的包还差呢,于是继续找资料,百度上已经被我都看得差不多了,*去google看了下官方说明,毕竟这才是最权威 的说明。官网上提示新的actionbar已经更换成toolbar,说是比actionbar更好用,难怪找半天找不到资料,原来换了组件名字了。按照官网提示进行了各种试验,官网还介绍了使用logo,标题title,副标题subtitle以及导航图标navigationicon等用法,看了效果后觉得与其了解这么多组件还不如自己写一个布局直接填进去,下面我就不费话,直接把界面布局写出来
好了,在这个布局里面可以尽情的发挥你的创意写出自己想要的效果。然后写完后一运行发现确实好多了,还差一点就是
左边还有那么 一些瑕疵,再激动的心情去找资料,发现加上两句神代码
这下ok了,完美了。
最后 加上
setOnMenuItemClickListener
监听方法,想怎么玩就怎么玩。
此方法只是我遇到的问题,如果大家有类似的其它问题欢迎发出来一起探讨