您的当前位置:首页正文

解决自定义actionbar 两边空隙

2024-11-08 来源:个人技术集锦

解决自定义actionbar 两边空隙

网上找的代码

ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    View customView = getLayoutInflater().inflate(R.layout.main_action_bar, null);
    actionBar.setCustomView(customView);
    Toolbar parent =(Toolbar) customView.getParent();
    parent.setPadding(0,0,0,0);//for tab otherwise give space in tab
    parent.setContentInsetsAbsolute(0,0);

自己的代码

private void initTitle() {
        try {
            mActionBar = getSupportActionBar();
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        if (mActionBar == null) {
            return;
        }
        mActionBar.setDisplayHomeAsUpEnabled(false);
        mActionBar.setDisplayShowTitleEnabled(false);
        mActionBar.setDisplayShowHomeEnabled(false);
        mActionBar.setDisplayShowCustomEnabled(true);
        if (mActionBar != null) {
            //mActionBar.setDisplayHomeAsUpEnabled(true);
            if (Build.VERSION.SDK_INT >= 21) {
                mActionBar.setElevation(0);
            }
        }
        View view = getLayoutInflater().inflate(R.layout.layout_base_title, null);
        ActionBar.LayoutParams layoutParams =
                new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
                        ActionBar.LayoutParams.MATCH_PARENT);

        mActionBar.setCustomView((View) view, layoutParams);
        if (((View) view).getParent() instanceof Toolbar) {
            Toolbar parent = (Toolbar) ((View) view).getParent();
            parent.setContentInsetsAbsolute(0, 0);
        }
    }
主要是parent.setContentInsetsAbsolute(0, 0);设置

contentInsetLeft、contentInsetRight、contentInsetStart、contentInsetEnd:Toolbar的左右两侧都是默认有16dp的padding的,如果你需要让Toolbar上的内容与左右两侧的距离有变化,便可以通过以上四个属性来进行相应的设置。
比如要让内容紧贴左侧或起始侧便可以将contentInsetLeft或contentInsetStart设为0。

对应方法:setContentInsetsRelative(int,int)——对应start和end
setContentInsetsAbsolute(int,int)——对应left和right


可以参考下一篇文章






显示全文