Android——自定义Actionbar左侧覆盖不全的解决方案

今天遇到一个很蛋疼的问题,就是在自定义Actionbar的时候,setCustomView中,自定义的view怎么也覆盖不了整个视图,左侧一直留有一个空白,看下图:

    


所写的部分代码如下:

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
		
	// 自定义actionbar的布局
	setActionBarLayout( R.layout.actionbar_port );		
}

/* 自定义actionbar */
private void setActionBarLayout(int layoutId) {
	ActionBar actionBar = getActionBar( );
	/*使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,
	如果设成true,显示应用程序图标,对应id为android.R.id.home*/
	actionBar.setDisplayShowHomeEnabled( false );
			
	//使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用
	actionBar.setDisplayShowCustomEnabled(true);
			
	LayoutInflater inflator = (LayoutInflater) this.getSystemService(
             Context.LAYOUT_INFLATER_SERVICE);
	View v = inflator.inflate(layoutId,null);
	ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
             LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
	actionBar.setCustomView(v,layout);
}
实际显示的时候,在4.4.2系统,ActionBar左侧有一块区域不是自定义的布局。在当前Activity的父类或者上述代码中加入如下代码,则显示正常:

//测试发现在4.4系统上,没有该代码,则ActionBar左侧出现无法覆盖问题 
if (getActionBar() != null) {
    getActionBar().setTitle("");
}

即有:

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
		
	// 自定义actionbar的布局
	setActionBarLayout( R.layout.actionbar_port );		
}

/* 自定义actionbar */
private void setActionBarLayout(int layoutId) {
	ActionBar actionBar = getActionBar( );
	/*使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,
	如果设成true,显示应用程序图标,对应id为android.R.id.home*/
	actionBar.setDisplayShowHomeEnabled( false );
			
	//使自定义的普通View能在title栏显示,即actionBar.setCustomView能起作用
	actionBar.setDisplayShowCustomEnabled(true);
	
        //测试发现在4.4系统上,没有该代码,则ActionBar左侧出现无法覆盖问题 
        if (getActionBar() != null) {
            getActionBar().setTitle("");
        }
		
	LayoutInflater inflator = (LayoutInflater) this.getSystemService(
             Context.LAYOUT_INFLATER_SERVICE);
	View v = inflator.inflate(layoutId,null);
	ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
             LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
	actionBar.setCustomView(v,layout);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值