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);
    }


  • 相关阅读:
    asp.net连接SQL server,SQLLite,Oracle,Access数据库
    c#中RadioButtonList选中后不整体刷新页面保持选中状态
    c#中onclick事件请求的两种区别
    java中从实体类中取值会忽略的的问题
    Groovy自定义函数实现时间表达式解析
    广度优先搜索、狄克丝特拉算法
    创建型模式
    数组、链表、散列表、图、树、队列、栈
    nginx.conf
    Nginx笔记一
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171546.html
Copyright © 2011-2022 走看看