自定义TopBar

近期在尝试一款RF手持终端的开发任务,由于系统版本要求,打算采用自定义topbar来作为导航栏,当然v7包里有更好的toolbar可供使用,这里简单做一下示例,仅供参考。
上代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    >

    <LinearLayout
        android:id="@+id/ll_back"
        android:layout_width="40dp"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        >

        <ImageView
            android:id="@+id/iv_back"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:src="@drawable/left_back" />
    </LinearLayout>

    <TextView
        android:id="@+id/tv_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/ll_back"
        android:layout_centerVertical="true"
        android:maxLength="4"
        android:textColor="@color/background_light"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/tv_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:maxLength="6"
        android:textColor="@color/background_light"
        android:textSize="16sp"
        />
    <TextView
        android:id="@+id/tv_rightSecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/tv_rightMost"
        android:layout_marginRight="10dp"
        android:maxLength="6"
        android:textColor="@color/background_light"
        android:textSize="16sp"
        />
    <TextView
        android:id="@+id/tv_rightMost"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:maxLength="5"
        android:textColor="@color/background_light"
        android:layout_marginRight="10dp"
        android:layout_alignParentRight="true"
        android:textSize="16sp"
        />
</RelativeLayout>

public class CustomTitle extends RelativeLayout {

    private LayoutInflater inflater;

    private View mView;
    private TextView tv_left;
    private TextView tv_center;
    private TextView tv_rightMost;
    private TextView tv_rightSecond;
    private LinearLayout ll_back;
    private ImageView iv_back;

    private CustomTitle.CustomToolbarListener listener;

    public CustomTitle(Context context) {
        super(context);
    }

    public CustomTitle(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
        initListener();
    }

    public CustomTitle(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    private void init() {
        if (mView == null) {
            inflater = LayoutInflater.from(getContext());
            mView = inflater.inflate(R.layout.toolbar_custom, null);
            tv_left = (TextView) mView.findViewById(R.id.tv_left);
            tv_center = (TextView) mView.findViewById(R.id.tv_center);
            tv_rightMost = (TextView) mView.findViewById(R.id.tv_rightMost);
            tv_rightSecond = (TextView) mView.findViewById(R.id.tv_rightSecond);
            ll_back = (LinearLayout) mView.findViewById(R.id.ll_back);
            iv_back = (ImageView) mView.findViewById(R.id.iv_back);
            //使用LayoutParams把控件添加到子view中
            LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
            addView(mView, lp);
        }
    }
    private void initListener() {
        ll_back.setOnClickListener(v -> listener.back(null));
    }

    public void setBackListener(CustomTitle.CustomToolbarListener backListener) {
        this.listener = backListener;
    }

    public void setTitle(CharSequence title) {
        if (tv_center != null) {
            if (!TextUtils.isEmpty(title)) {
                tv_center.setVisibility(VISIBLE);
                tv_center.setText(title);
            } else {
                tv_center.setVisibility(GONE);
            }
        }
    }

    public void setTvLeft(String tvLeft) {
        if (!TextUtils.isEmpty(tvLeft)) {
            tv_left.setVisibility(VISIBLE);
            tv_left.setText(tvLeft);
        } else {
            tv_left.setVisibility(GONE);
        }
    }

    public void setTvRightMost(String tvRightMost) {
        if (!TextUtils.isEmpty(tvRightMost)) {
            tv_rightMost.setVisibility(VISIBLE);
            tv_rightMost.setText(tvRightMost);
        } else {
            tv_rightMost.setVisibility(GONE);
        }
    }

    public void setTvRightSecond(String tvRightSecond) {
        if (!TextUtils.isEmpty(tvRightSecond)) {
            tv_rightSecond.setVisibility(VISIBLE);
            tv_rightSecond.setText(tvRightSecond);
        } else {
            tv_rightSecond.setVisibility(GONE);
        }
    }

    public interface CustomToolbarListener<T> {

        void back(T t);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值