zoukankan      html  css  js  c++  java
  • 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);
    }


  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171546.html
Copyright © 2011-2022 走看看