自定义view--自定义分类Tab菜单条,自定义垂直progressbar(类似温度计)

前不久做的一个项目用到了好多自定义的view,先写个博客记录一下其中两个,比较简单,就放到一个博客里写吧。1,分类Tab菜单条首先自定义属性: 上代码:自定义TabarViewpublic class TabBarView extends RelativeLayout implements O
摘要由CSDN通过智能技术生成

前不久做的一个项目用到了好多自定义的view,先写个博客记录一下其中两个,比较简单,就放到一个博客里写吧。

1,分类Tab菜单条

首先自定义属性:

<declare-styleable name="titleBar">
        <attr name="first" format="string|reference"></attr>
         <attr name="second" format="string|reference"></attr>
         <attr name="third" format="string|reference"></attr>
         <attr name="forth" format="string|reference"></attr>
    </declare-styleable>

上代码:自定义TabarView

public class TabBarView extends RelativeLayout implements OnClickListener {
	private Context mContext;
	private TextView tab1;
	private TextView tab2;
	private TextView tab3;
	private TextView tab4;
	//tab的索引
	public static final int CLICK_POSITION_FIRST = 0;
	public static final int CLICK_POSITION_SECOND = 1;
	public static final int CLICK_POSITION_THIRD = 2;
	public static final int CLICK_POSITION_FORTH = 3;
	private TabClickListener onTabClickListener;
	public TabBarView(Context context) {
		super(context);
		mContext = context;
		initView();
	}

	public TabBarView(Context context, AttributeSet attrs) {
		super(context, attrs);
		mContext = context;
		initView();
		TypedArray array = context.obtainStyledAttributes(attrs,
				R.styleable.titleBar);
		tab1.setText(array.getText(R.styleable.titleBar_first));
		tab2.setText(array.getText(R.styleable.titleBar_second));
		tab3.setText(array.getText(R.styleable.titleBar_third));
		tab4.setText(array.getText(R.styleable.titleBar_forth));
		array.recycle();
		
	}

	private void initView() {
		LayoutInflater.from(mContext).inflate(R.layout.title_bar_layout, this);
		tab1 = (TextView) findViewById(R.id.tv_tab1);
		tab2 = (TextView) findViewById(R.id.tv_tab2);
		tab3 = (TextView) findViewById(R.id.tv_tab3);
		tab4 = (TextView) findViewById(R.id.tv_tab4);
		tab1.setOnClickListener(this);
		tab2.setOnClickListener(this);
		tab3.setOnClickListener(this);
		tab4.setOnClickListener(this);

	}
	//设置点击的tab
	public void setClickPosition(int position) {
		if (position == CLICK_POSITION_FIRST) {
			tab1.performClick();
		}

		if (position == CLICK_POSITION_SECOND) {
			tab2.performClick();
		}

		if (position == CLICK_POSITION_THIRD) {
			tab3.performClick();
		}
		if (position == CLICK_POSITION_FORTH) {
			tab4.performClick();
		}
	}
	@Override
	public void onClick(View v) {
		v.setEnabled(false);
		switch (v.getId()) {
		case R.id.tv_tab1:
			tab2.setEnabled(true);
			tab3.setEnabled(true);
			tab4.setEnabled(true);
			if (onTabClickListener != null)
				onTabClickListener.onFirstTabClick(v);

			break;
		case R.id.tv_tab2:
			tab1.setEnabled(true);
			tab3.setEnabled(true);
			tab4.setEnabled(true);
			if (onTabClickListener != null)
				onTabClickListener.onSecondTabClick(v);

			break;
		case R.id.tv_tab3:
			tab1.setEnabled(true);
			tab2.se
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值