美文网首页
安卓自定义顶部导航栏

安卓自定义顶部导航栏

作者: wcdd | 来源:发表于2018-07-24 23:23 被阅读0次

    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里面添加需要定义的属性

    <declare-styleable name="MyBar">
            <attr name="titleText" format="string" />
        </declare-styleable>
    
    image.png

    3、在需要用到的地方

    <com.test.mz.view.MyToolBar
            android:id="@+id/my_tool"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:titleText="设置"/>
    

    4、代码里面使用

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

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

    相关文章

      网友评论

          本文标题:安卓自定义顶部导航栏

          本文链接:https://www.haomeiwen.com/subject/dilumftx.html