自定义 TopBar
2015-11-05 15:00
417 查看
package com.weidingqiang.customchinacar.views.topbar; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.weidingqiang.customchinacar.R; import com.weidingqiang.customchinacar.utils.MathTools; /** * Created by weidingqiang on 15/10/27. * 通用标题组件 */ /** * 标题组件 由三个组件构成 * 左为 返回按钮固定 * 中间 标题或者图片 * 右边 文字或者按钮组件 */ public class BaseTopBar extends RelativeLayout implements View.OnClickListener{ public static final String TAG = BaseTopBar.class.getSimpleName(); //中间是否显示文字 private Boolean isShowMiddleTextView; //中间文字 private String middleText; //中间图片 private Drawable middleImage; //是否显示右边内容 private Boolean isShowRight; //是否显示右边文字 private Boolean isShowRightTextView; //右边文字 private String rightText; //右边图片 private Drawable rightImage; //左边图片 private Drawable leftImage; //左边按钮 private ImageView backImageView; //中间组件 private TextView middleTextView; private ImageView middleImageView; //右边组件 private TextView rightTextView; private ImageView rightImageView; //导航条的按钮接口 private TopbarImp topbarImp; public void setTopbarImp(TopbarImp topbarImp) { this.topbarImp = topbarImp; } public BaseTopBar(Context context, AttributeSet attrs) { super(context, attrs); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.baseTopBar); isShowMiddleTextView = typedArray.getBoolean(R.styleable.baseTopBar_isShowMiddleTextView,true); middleText = typedArray.getString(R.styleable.baseTopBar_middleText); middleImage = typedArray.getDrawable(R.styleable.baseTopBar_middleImage); isShowRight = typedArray.getBoolean(R.styleable.baseTopBar_isShowRight,false); isShowRightTextView = typedArray.getBoolean(R.styleable.baseTopBar_isShowRightTextView,false); rightText =typedArray.getString(R.styleable.baseTopBar_rightText); rightImage = typedArray.getDrawable(R.styleable.baseTopBar_rightImage); leftImage = typedArray.getDrawable(R.styleable.baseTopBar_leftImage); typedArray.recycle(); initView(context); } /** * 初始化UI */ private void initView(Context context) { //设置背景 this.setBackgroundColor(getResources().getColor(R.color.topbar_bg)); //left layout backImageView = new ImageView(context); LayoutParams leftlayout = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); leftlayout.addRule(RelativeLayout.CENTER_VERTICAL); leftlayout.addRule(RelativeLayout.ALIGN_PARENT_LEFT); leftlayout.leftMargin = (int)getResources().getDimension(R.dimen.topbar_margin); if(leftImage != null){ backImageView.setImageDrawable(leftImage); }else { backImageView.setImageResource(R.drawable.left_arrow_back); } backImageView.setOnClickListener(this); addView(backImageView, leftlayout); //middle layout LayoutParams middlelayout = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); middlelayout.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE); //如果 为 true 则显示文字 否则显示图片 if(isShowMiddleTextView){ middleTextView = new TextView(context); middleTextView.setText(middleText); middleTextView.setTextColor(getResources().getColor(R.color.whitesmoke)); middleTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.topbar_middletext_size)); addView(middleTextView,middlelayout); }else { middleImageView = new ImageView(context); middleImageView.setImageDrawable(middleImage); addView(middleImageView,middlelayout); } //right layout if(isShowRight){ LayoutParams rightlayoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); rightlayoutParams.addRule(RelativeLayout.CENTER_VERTICAL,TRUE); rightlayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE); rightlayoutParams.rightMargin = (int)getResources().getDimension(R.dimen.topbar_margin); if(isShowRightTextView){ rightTextView = new TextView(context); rightTextView.setText(rightText); rightTextView.setTextColor(getResources().getColor(R.color.whitesmoke)); rightTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.topbar_middletext_size)); rightTextView.setOnClickListener(this); addView(rightTextView, rightlayoutParams); }else { rightImageView = new ImageView(context); rightImageView.setImageDrawable(rightImage); rightImageView.setOnClickListener(this); addView(rightImageView, rightlayoutParams); } } } @Override public void onClick(View v) { if(v == backImageView){ topbarImp.back(); } else { topbarImp.rightClick(); } } }
<!--topbar 样式 -->
<declare-styleable name="baseTopBar">
<!--是否显示中间的TextView false 为显示imageview -->
<attr name="leftImage" format="reference"/>
<attr name="isShowMiddleTextView" format="boolean" />
<attr name="middleText" format="string"/>
<attr name="middleImage" format="reference"/>
<attr name="isShowRight" format="boolean"/>
<attr name="isShowRightTextView" format="boolean"/>
<attr name="rightText" format="string"/>
<attr name="rightImage" format="reference"/>
</declare-styleable>
相关文章推荐
- Android Camera架构浅析
- 29个你必须知道的linux命令
- Linux 挂载须知: mount 一些小问题 mount: no medium found on /dev/sr0
- linux shell if -a 到-z参数含义
- linux:预定义变量和read命令
- rsync错误捕获 shell捕获返回码
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
- 我的网站
- Linux命令常用大全
- Redhat Linux5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载
- shell和Python调用企业微信服务号进行报警
- linux启动关闭tomcat
- Xshell配色方案说明
- Tutorial: Loading Wave files in OpenAL without ALUT
- Apache Kafka源码分析 - ReplicaStateMachine
- nginx+php-fpm总是504 time out
- OpenGL超级宝典学习笔记——GLSL语言基础
- tomcat 中程序获取端口
- 升级Xcode7之后,消除 Directory not found for option ‘xxxx'警告
- Linux内存窥视--brk