TopBar

最近正在写一个项目,一开始写项目的时候,还不懂自定义控件是什么鬼,然后TopBar就是复制再复制,看到这么多的重复代码,
有种想吐吐不出的感觉,心情很不爽,后来学习了一下自定义控件,为了方便看效果,把三个TopBar放到同一个界面中了,效果如图:

先看看主布局文件:


    

    

    


然后是MainActivity.Java中的数据
public class MainActivity extends Activity implements View.OnClickListener {

    private Context mContext = this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //这是第一个标题
        WidgetTopBar wtbOne = (WidgetTopBar) findViewById(R.id.wtb_one);
        wtbOne.getLeftBtnText().setOnClickListener(this);
        wtbOne.getRightBtnImage().setOnClickListener(this);
        //这是第二个标题
        WidgetTopBar wtbTwo = (WidgetTopBar) findViewById(R.id.wtb_two);
        wtbTwo.getLeftBtnImage().setOnClickListener(this);
        wtbTwo.getRightBtnText().setOnClickListener(this);
        //这是第三个标题
        WidgetTopBar wtbThree = (WidgetTopBar) findViewById(R.id.wtb_three);
        wtbThree.getLeftBtnImage().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, "第三个标题 左边按钮", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ib_left_top_bar: {
                Toast.makeText(mContext, "第二个标题 左边按钮", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.ib_right_top_bar: {
                Toast.makeText(mContext, "第一个标题 右边按钮", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.btn_left_top_bar: {
                Toast.makeText(mContext, "第一个标题 左边按钮", Toast.LENGTH_SHORT).show();
                break;
            }
            case R.id.btn_right_top_bar: {
                Toast.makeText(mContext, "第二个标题 右边按钮", Toast.LENGTH_SHORT).show();
                break;
            }
        }
    }
}

现在的代码量,比没有用自定义控件的代码量要少很多了
下面我们来看看这个自定义控件是怎么实现的
先看看res/values/attr.xml中的属性设置(没有attr.xml文件的话,请自行新建)


    
    
        
        
        
        
        
    


再看看自定义控件的布局文件是怎么样的:



    


你可能感兴趣的:(TopBar)