package com.yiwen.mobike.views; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.StringRes; import android.support.v7.app.ActionBar; import android.support.v7.widget.TintTypedArray; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.andexert.library.RippleView; import com.yiwen.mobike.R; /** * User: Yiwen(https://github.com/yiwent) * Date: 2017-05-02 * Time: 11:00 * 自定义toolbar */ public class MyToolBar extends Toolbar { private LayoutInflater mInflater; private View mView; private TextView toolbar_title; private EditText toolbar_searchview; private ImageView toolbar_leftButton; private ImageView toolbar_rightButton; private boolean showSearchView; private Drawable left_button_icon; private Drawable right_button_icon; private String title; private RippleView mLRippleView, mRRippleView; 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); initview(); if (attrs != null) { final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs, R.styleable.MyToolBar, defStyleAttr, 0); showSearchView = a.getBoolean(R.styleable.MyToolBar_showSearchView, false); left_button_icon = a.getDrawable(R.styleable.MyToolBar_leftButtonIcon); right_button_icon = a.getDrawable(R.styleable.MyToolBar_rightButtonIcon); title = a.getString(R.styleable.MyToolBar_myTitle); a.recycle(); } isShouw(); setContentInsetsRelative(10, 10); initListener(); } private void initListener() { // toolbar_leftButton.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // if (onLeftButtonClickListener != null) { // onLeftButtonClickListener.onClick(); // } // } // }); // // toolbar_rightButton.setOnClickListener(new OnClickListener() { // @Override // public void onClick(View v) { // if (onRightButtonClickListener != null) { // onRightButtonClickListener.onClick(); // } // } // }); mLRippleView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() { @Override public void onComplete(RippleView rippleView) { if (onLeftButtonClickListener != null) { onLeftButtonClickListener.onClick(); } } }); mRRippleView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() { @Override public void onComplete(RippleView rippleView) { if (onRightButtonClickListener != null) { onRightButtonClickListener.onClick(); } } }); } public void isShouw() { if (showSearchView) { showSearchview(); hideTitle(); } else { hideSearchview(); showTitle(); if (title != null) { toolbar_title.setText(title); } } Log.d("left_button_icon", "initview:5"+left_button_icon); if (left_button_icon != null) { toolbar_leftButton.setVisibility(VISIBLE); toolbar_leftButton.setBackground(left_button_icon); } if (right_button_icon != null) { toolbar_rightButton.setVisibility(VISIBLE); toolbar_rightButton.setImageDrawable(right_button_icon); } } public interface OnLeftButtonClickListener { void onClick(); } public interface OnRightButtonClickListener { void onClick(); } private OnLeftButtonClickListener onLeftButtonClickListener; private OnRightButtonClickListener onRightButtonClickListener; public void setOnLeftButtonClickListener(OnLeftButtonClickListener listener) { onLeftButtonClickListener = listener; } public void setOnRightButtonClickListener(OnRightButtonClickListener listener) { onRightButtonClickListener = listener; } private void initview() { if (mView == null) { mInflater = LayoutInflater.from(getContext()); mView = mInflater.inflate(R.layout.toolbar, null); mLRippleView = (RippleView) mView.findViewById(R.id.more); mRRippleView = (RippleView) mView.findViewById(R.id.more1); toolbar_rightButton = (ImageView) mView.findViewById(R.id.id_btn_right); toolbar_title = (TextView) mView.findViewById(R.id.id_tv_title); toolbar_searchview = (EditText) mView.findViewById(R.id.id_et_search); toolbar_leftButton = (ImageView) mView.findViewById(R.id.id_ib_navigation); ActionBar.LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); addView(mView, lp); // if (showSearchView) { // showSearchview(); // hideTitle(); // } else { // hideSearchview(); // showTitle(); // if (title != null) { // toolbar_title.setText(title); // } // } // Log.d("left_button_icon", "initview:5"+left_button_icon); // if (left_button_icon != null) { // // toolbar_leftButton.setBackground(left_button_icon); // toolbar_leftButton.setVisibility(VISIBLE); // } // // if (right_button_icon != null) { // toolbar_rightButton.setImageDrawable(right_button_icon); // toolbar_rightButton.setVisibility(VISIBLE); // } } } @Override public void setTitle(@StringRes int resId) { setTitle(getContext().getString(resId)); } @Override public void setTitle(CharSequence title) { initview(); if (toolbar_title != null) { toolbar_title.setText(title); showTitle(); } } public void showSearchview() { if (toolbar_searchview != null) { toolbar_searchview.setVisibility(VISIBLE); } } public void hideSearchview() { if (toolbar_searchview != null) { toolbar_searchview.setVisibility(GONE); } } public void showTitle() { if (toolbar_title != null) { toolbar_title.setVisibility(VISIBLE); } } public void hideTitle() { if (toolbar_title != null) { toolbar_title.setVisibility(GONE); } } /** * 设置左右按钮的图标 * * @param d */ public void setLeftButtonIconDrawable(Drawable d) { toolbar_leftButton.setImageDrawable(d); toolbar_leftButton.setVisibility(VISIBLE); } public void setRightButtonIconDrawable(Drawable d) { toolbar_rightButton.setImageDrawable(d); toolbar_rightButton.setVisibility(VISIBLE); } /** * 标题与搜索框的切换 */ public void setShowSearchView() { hideTitle(); showSearchview(); } public void setShowTitleView(String title) { hideSearchview(); showTitle(); toolbar_title.setText(title); } }