使用建造者设计模式打造万能Navigationbar框架

1、 自定义头部导航栏功能,扩展性强。

2、如果需要自己定义布局只需要继承AbsNavigationBar 这个类就行 参照我的DefauleNavigationBar写法就可以完成。

最简单的用法

new DefauleNavigationBar.Builder(this).setTitle("我是标题")
                .setBackClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(MainActivity.this,"点击左边图片",Toast.LENGTH_SHORT).show();
                    }
                }).setRightClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,"点击右边",Toast.LENGTH_SHORT).show();
            }
        }).setRightText("右边文字").builer();

3、如果有仔细看可能会有点疑惑,为什么不需要添加布局,因为我们的布局是上面还有两层布局嵌套一个是直接new出来的FrameLayout,然后在把系统的布局add进这个FrameLayout布局中,最后才是我们自己的布局。我们的布局就是放到content这个id的LinearLayout中 然后获取第0个位置 就是我们自己的布局了,最后在把这个标题栏add进第0个位置

private void createAndBindView(){

        if (mParams.mParent ==null){
            ViewGroup activityRoot = (ViewGroup)((Activity)mParams.mContext).findViewById(android.R.id.content);
            mParams.mParent = (ViewGroup) activityRoot.getChildAt(0);
        }

        if (mParams.mParent == null){

            return;
        }

        mNavigationView = LayoutInflater.from(mParams.mContext).inflate(bindLayoutId(),mParams.mParent,false);

        mParams.mParent.addView(mNavigationView,0);

        applyView();
    }

代码地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,964评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,663评论 0 17
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,841评论 1 92
  • 他们用目光在我身上散步 这么多年我一直在搞行为艺术 很感谢晕车让我有机会对工业化说不 除了拒绝本身我什么都拒绝不了...
    勒普兰斯阅读 248评论 0 0
  • 昨天我疯狂的找那张相片,然后又跑回娘家去找,终于找到了,然后又跑到县城去交,今天我开了办公室的门,却发现在地上静静...
    马上做阅读 369评论 0 0