安卓自定义顶部导航栏

1、第一步新建MyToolBar.java

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.tangzhuozhuan.mz.R;


public class MyToolBar extends LinearLayout {

    private String titleTextStr;
    private TitleOnClickListener titleOnClickListener;
    private TextView tool_title;

    public MyToolBar(Context context) {
        this(context, null);
    }

    public MyToolBar(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyToolBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //TypedArray是一个数组容器用于存放属性值
        @SuppressLint("CustomViewStyleable") TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyBar);

        int count = ta.getIndexCount();
        for (int i = 0; i < count; i++) {
            int attr = ta.getIndex(i);
            switch (attr) {

                case R.styleable.MyBar_titleText:

                    titleTextStr = ta.getString(R.styleable.MyBar_titleText);

                    break;
            }
        }
        //用完务必回收容器
        ta.recycle();

        //获取布局
        View view = LayoutInflater.from(context).inflate(R.layout.toolbar_layout, this);
        initView(view);
    }

    private void initView(View view) {
        LinearLayout tool_back = (LinearLayout) view.findViewById(R.id.tool_back);
        tool_title = (TextView) view.findViewById(R.id.tool_title);
        if (titleTextStr != null){
            tool_title.setText(titleTextStr);
        }
        tool_back.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                if (titleOnClickListener != null) {
                    titleOnClickListener.onBackClick();
                }
            }
        });
    }

    public void setTitle(String title) {
        if (!TextUtils.isEmpty(title)) {
            tool_title.setText(title);
        }
    }

    /**
     * 设置标题的点击监听
     *
     * @param titleOnClickListener
     */
    public void setOnTitleClickListener(TitleOnClickListener titleOnClickListener) {
        this.titleOnClickListener = titleOnClickListener;
    }

    /**
     * 监听标题点击接口
     */
    public interface TitleOnClickListener {
        /**
         * 返回按钮的点击事件
         */
        void onBackClick();

    }

}

2、在arrts.xml里面添加需要定义的属性


        
    
image.png

3、在需要用到的地方


4、代码里面使用

my_tool = (MyToolBar) findViewById(R.id.my_tool);
        my_tool.setOnTitleClickListener(new MyToolBar.TitleOnClickListener() {
            @Override
            public void onBackClick() {
                //点击返回上一级
                finish();
            }
        });

介绍完成,比较简单的案例,需要定义多个属性按照示例添加即可

你可能感兴趣的:(安卓自定义顶部导航栏)