ActionBar自定义布局并填充,设置的样式,并封装ActionBar。。

因为某些需求不得不使ActionBar引入自己写的布局文件,这样更有可维护性。中间也走了很多坑,布局文件并不会填充整个ActionBar的空间,左边右边下面会留有间隔,看过一些资料都试了一下,终于搞好了。
左右间隔问题,会在样式里面有属性来设置为0dp
下面有间隙,在样式里固定写死高度这个属性即可。
好了,贴代码吧。
1.在清单文件里引用一下你的主题样式:

 

2.自定义的样式:注释着重看下

 
    

    

3.在BaseActivity中对ActionBar进行封装设置

 /**
         * 自定义actionBar标题栏
         */
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayShowCustomEnabled(true);
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_title,null);
            ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
            actionBar.setCustomView(view,layoutParams);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//21
                actionBar.setElevation(0);//5.0以上去阴影
            }

            tvTitle = (TextView) view.findViewById(R.id.tv_title);
            String title = getTitle().toString();
            tvTitle.setText(title);
            ivBack = (ImageView) view.findViewById(R.id.iv_back);
            ivBack.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });


        }

getTitle()可以获得activity中label标签的值

4.布局文件




    

        


        


        
    


    

你可能感兴趣的:(ActionBar自定义布局并填充,设置的样式,并封装ActionBar。。)