BaseToolbar.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.sheishuo.app.common.views;
  2. import android.content.Context;
  3. import android.support.annotation.ColorInt;
  4. import android.support.annotation.Nullable;
  5. import android.support.v7.widget.Toolbar;
  6. import android.util.AttributeSet;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.widget.ImageView;
  10. import android.widget.LinearLayout;
  11. import android.widget.TextView;
  12. import com.bumptech.glide.Glide;
  13. import com.sheishuo.app.R;
  14. import com.sheishuo.app.common.util.img.ImgUtil;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. import okhttp3.FormBody;
  18. /**
  19. * Created by KN on 2017/7/20.
  20. */
  21. public class BaseToolbar extends Toolbar {
  22. private final String TITLE = "title",LEFT_TEXT = "left_text",RIGHT_TEXT = "right_text";
  23. private static Context context;
  24. private String titleStr = "",leftStr = "",rightStr = "";
  25. private TextView titleTV,leftTV,rightTV;
  26. private LinearLayout icoLayout;
  27. public interface IcoBtnClickListener{
  28. void onClick(View view);
  29. }
  30. public BaseToolbar(Context context, @Nullable AttributeSet attrs) {
  31. super(context, attrs);
  32. this.context = context;
  33. View view = LayoutInflater.from(context).inflate(R.layout.base_toolbar,this,true);
  34. findViews(view);
  35. assert attrs != null;
  36. int count = attrs.getAttributeCount();
  37. for (int index = 0; index < count; index++) {
  38. String attributeName = attrs.getAttributeName(index);
  39. switch (attributeName){
  40. case TITLE:
  41. if (attrs.getAttributeValue(index) != null)
  42. titleTV.setText(titleStr = attrs.getAttributeValue(index));
  43. break;
  44. case LEFT_TEXT:
  45. if (attrs.getAttributeValue(index) != null)
  46. leftTV.setText(leftStr = attrs.getAttributeValue(index));
  47. break;
  48. case RIGHT_TEXT:
  49. if (attrs.getAttributeValue(index) != null)
  50. rightTV.setText(rightStr = attrs.getAttributeValue(index));
  51. break;
  52. }
  53. }
  54. }
  55. private void findViews(View view){
  56. titleTV = (TextView) view.findViewById(R.id.toolbar_title);
  57. leftTV = (TextView) view.findViewById(R.id.toolbar_left);
  58. rightTV = (TextView) view.findViewById(R.id.toolbar_right);
  59. icoLayout = (LinearLayout) view.findViewById(R.id.toolbar_ico_layout);
  60. }
  61. public TextView getTitleTV() {
  62. return titleTV;
  63. }
  64. public TextView getLeftTV() {
  65. return leftTV;
  66. }
  67. public TextView getRightTV() {
  68. return rightTV;
  69. }
  70. public void init(){
  71. titleTV.setVisibility(INVISIBLE);
  72. leftTV.setVisibility(INVISIBLE);
  73. rightTV.setVisibility(INVISIBLE);
  74. icoLayout.removeAllViews();
  75. icoLayout.setVisibility(GONE);
  76. titleTV.setOnClickListener(null);
  77. leftTV.setOnClickListener(null);
  78. rightTV.setOnClickListener(null);
  79. this.setLogo(null);
  80. }
  81. public void setTitle(String title){
  82. getTitleTV().setText(title);
  83. titleTV.setVisibility(VISIBLE);
  84. }
  85. public void setLeftText(String leftStr){
  86. getLeftTV().setText(leftStr);
  87. leftTV.setVisibility(VISIBLE);
  88. }
  89. public void setRightText(String rightStr){
  90. getRightTV().setText(rightStr);
  91. rightTV.setVisibility(VISIBLE);
  92. }
  93. public LinearLayout getIcoLayout() {
  94. return icoLayout;
  95. }
  96. public void setIcoLayout(LinearLayout icoLayout) {
  97. this.icoLayout = icoLayout;
  98. }
  99. /**************用于为BaseToolbar增加额外功能***************/
  100. public static class Builder implements OnClickListener{
  101. BaseToolbar toolbar;
  102. private List<Integer> icoIds = new ArrayList<>();
  103. IcoBtnClickListener listener;
  104. Context context;
  105. public Builder create(Context context,@Nullable BaseToolbar toolbar){
  106. if (toolbar == null){
  107. this.toolbar = new BaseToolbar(context,null);
  108. }else {
  109. this.toolbar = toolbar;
  110. }
  111. this.context = context;
  112. return this;
  113. }
  114. /**
  115. * 为Toolbar添加一个图标按钮
  116. *
  117. * 为了保证布局显示正常,若添加ico按钮则自动隐藏Right_Text
  118. * @param resId
  119. */
  120. public BaseToolbar.Builder addIcoButton(int resId){
  121. toolbar.rightTV.setVisibility(GONE);
  122. toolbar.icoLayout.setVisibility(VISIBLE);
  123. ImageView icoView = new ImageView(context);
  124. icoView.setAdjustViewBounds(true);
  125. int dpToPixel = (int) ImgUtil.convertDpToPixel(24,context);
  126. Glide.with(context)
  127. .load(resId)
  128. .override(dpToPixel,dpToPixel)
  129. .into(icoView);
  130. toolbar.icoLayout.addView(icoView);
  131. icoIds.add(resId);
  132. return this;
  133. }
  134. public BaseToolbar.Builder addIcoButtonClickListener(int index,IcoBtnClickListener listener){
  135. this.listener = listener;
  136. toolbar.getIcoLayout().getChildAt(0).setOnClickListener(this);
  137. return this;
  138. }
  139. public BaseToolbar build(){
  140. return toolbar;
  141. }
  142. @Override
  143. public void onClick(View v) {
  144. if (listener != null) listener.onClick(v);
  145. }
  146. }
  147. }