123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- package com.sheishuo.app.common.views;
- import android.content.Context;
- import android.support.annotation.ColorInt;
- import android.support.annotation.Nullable;
- import android.support.v7.widget.Toolbar;
- import android.util.AttributeSet;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.bumptech.glide.Glide;
- import com.sheishuo.app.R;
- import com.sheishuo.app.common.util.img.ImgUtil;
- import java.util.ArrayList;
- import java.util.List;
- import okhttp3.FormBody;
- /**
- * Created by KN on 2017/7/20.
- */
- public class BaseToolbar extends Toolbar {
- private final String TITLE = "title",LEFT_TEXT = "left_text",RIGHT_TEXT = "right_text";
- private static Context context;
- private String titleStr = "",leftStr = "",rightStr = "";
- private TextView titleTV,leftTV,rightTV;
- private LinearLayout icoLayout;
- public interface IcoBtnClickListener{
- void onClick(View view);
- }
- public BaseToolbar(Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- this.context = context;
- View view = LayoutInflater.from(context).inflate(R.layout.base_toolbar,this,true);
- findViews(view);
- assert attrs != null;
- int count = attrs.getAttributeCount();
- for (int index = 0; index < count; index++) {
- String attributeName = attrs.getAttributeName(index);
- switch (attributeName){
- case TITLE:
- if (attrs.getAttributeValue(index) != null)
- titleTV.setText(titleStr = attrs.getAttributeValue(index));
- break;
- case LEFT_TEXT:
- if (attrs.getAttributeValue(index) != null)
- leftTV.setText(leftStr = attrs.getAttributeValue(index));
- break;
- case RIGHT_TEXT:
- if (attrs.getAttributeValue(index) != null)
- rightTV.setText(rightStr = attrs.getAttributeValue(index));
- break;
- }
- }
- }
- private void findViews(View view){
- titleTV = (TextView) view.findViewById(R.id.toolbar_title);
- leftTV = (TextView) view.findViewById(R.id.toolbar_left);
- rightTV = (TextView) view.findViewById(R.id.toolbar_right);
- icoLayout = (LinearLayout) view.findViewById(R.id.toolbar_ico_layout);
- }
- public TextView getTitleTV() {
- return titleTV;
- }
- public TextView getLeftTV() {
- return leftTV;
- }
- public TextView getRightTV() {
- return rightTV;
- }
- public void init(){
- titleTV.setVisibility(INVISIBLE);
- leftTV.setVisibility(INVISIBLE);
- rightTV.setVisibility(INVISIBLE);
- icoLayout.removeAllViews();
- icoLayout.setVisibility(GONE);
- titleTV.setOnClickListener(null);
- leftTV.setOnClickListener(null);
- rightTV.setOnClickListener(null);
- this.setLogo(null);
- }
- public void setTitle(String title){
- getTitleTV().setText(title);
- titleTV.setVisibility(VISIBLE);
- }
- public void setLeftText(String leftStr){
- getLeftTV().setText(leftStr);
- leftTV.setVisibility(VISIBLE);
- }
- public void setRightText(String rightStr){
- getRightTV().setText(rightStr);
- rightTV.setVisibility(VISIBLE);
- }
- public LinearLayout getIcoLayout() {
- return icoLayout;
- }
- public void setIcoLayout(LinearLayout icoLayout) {
- this.icoLayout = icoLayout;
- }
- /**************用于为BaseToolbar增加额外功能***************/
- public static class Builder implements OnClickListener{
- BaseToolbar toolbar;
- private List<Integer> icoIds = new ArrayList<>();
- IcoBtnClickListener listener;
- Context context;
- public Builder create(Context context,@Nullable BaseToolbar toolbar){
- if (toolbar == null){
- this.toolbar = new BaseToolbar(context,null);
- }else {
- this.toolbar = toolbar;
- }
- this.context = context;
- return this;
- }
- /**
- * 为Toolbar添加一个图标按钮
- *
- * 为了保证布局显示正常,若添加ico按钮则自动隐藏Right_Text
- * @param resId
- */
- public BaseToolbar.Builder addIcoButton(int resId){
- toolbar.rightTV.setVisibility(GONE);
- toolbar.icoLayout.setVisibility(VISIBLE);
- ImageView icoView = new ImageView(context);
- icoView.setAdjustViewBounds(true);
- int dpToPixel = (int) ImgUtil.convertDpToPixel(24,context);
- Glide.with(context)
- .load(resId)
- .override(dpToPixel,dpToPixel)
- .into(icoView);
- toolbar.icoLayout.addView(icoView);
- icoIds.add(resId);
- return this;
- }
- public BaseToolbar.Builder addIcoButtonClickListener(int index,IcoBtnClickListener listener){
- this.listener = listener;
- toolbar.getIcoLayout().getChildAt(0).setOnClickListener(this);
- return this;
- }
- public BaseToolbar build(){
- return toolbar;
- }
- @Override
- public void onClick(View v) {
- if (listener != null) listener.onClick(v);
- }
- }
- }
|