android actionbar setCustomView时布局整体右移解决方案

最近在做了一个项目,我用的是开源的actionbarsherlock开源框架,至于为什么用这个我个人觉得很好用,还有人经常维护,这样出问题好解决,源码也可以看见,我自定义了一个actionbar的布局文件然后用下面代码设置了一下,在部分手机上是好的,在部分手机有问题,在4.4.2以上actionbar右边出现下图:

           

                ActionBar actionBar = getSupportActionBar();
		if (null != actionBar) {
			actionBar.setDisplayShowHomeEnabled(false);
			actionBar.setDisplayShowCustomEnabled(true);
			LayoutInflater inflator = (LayoutInflater) this
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			View v = inflator.inflate(layoutId, null);
			v.setBackground(getResources().getDrawable(
					R.drawable.actionbar_gradient_bg));
			ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
			actionBar.setCustomView(v, layout);


		} 


      发现一个很严重的问题自定义的布局整体右移了,于是在网上查资料,自己琢磨,发现在4.4.2左边应该是有title,解决方案是在设置actionbar之前判断一下,给title设置空字符串代码如下:

if (getSupportActionBar() != null) {
			getSupportActionBar().setTitle("");
		}

完成代码如下:

if (getSupportActionBar() != null) {
			getSupportActionBar().setTitle("");
		}
		ActionBar actionBar = getSupportActionBar();

		if (null != actionBar) {

			actionBar.setDisplayShowHomeEnabled(false);
			actionBar.setDisplayShowCustomEnabled(true);
			LayoutInflater inflator = (LayoutInflater) this
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			View v = inflator.inflate(layoutId, null);
			v.setBackground(getResources().getDrawable(
					R.drawable.actionbar_gradient_bg));
			ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
			actionBar.setCustomView(v, layout);

		}

	}

上图:


你可能感兴趣的:(android actionbar setCustomView时布局整体右移解决方案)