简单的自定义View的实现

本文介绍如何在项目中自定义一个记录订单数量的控件,实现点击后数值自动加一,直至最大值后重新从一开始加的功能。通过继承TextView并重写onTouchEvent方法来处理触摸事件,确保数值循环更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中要用到一个记录订单数量的控件,要求实现的效果是每次点击这个控件,里面的值就会自动加一,直至加大最大之后又重新从一开始加。之前一直是使用默认的TextView来实现的,但是考虑到项目中又多个地方要用到这个控件,所以决定把它自定义一下。


(控件的截图)

1、以前的实现的方法

int count = Integer.parseInt(amount.getText().toString());
			amount.setText(String.valueOf(count % 5 + 1));

2、自定义View的方法

首先定义一个View,叫AmountView,继承自TextView。具体代码如下:

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.TextView;

/**
 * 自定义UI控件,记录菜的份数
 * 
 * @school University of South China
 * @date 2014.01
 */
public class AmountView extends TextView {
	/**
	 * 最大的份数
	 */
	private int mMaxAmount = 5;
	/**
	 * 当前显示的份数
	 */
	private int mAmount = 1;

	public AmountView(Context context) {
		super(context);
		setText(mAmount + "");
	}

	public AmountView(Context context, AttributeSet attrs) {
		super(context, attrs);
		setText(mAmount + "");
	}

	public AmountView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		setText(mAmount + "");
	}

	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (event.getAction() == MotionEvent.ACTION_UP) {
			mAmount = mAmount % mMaxAmount + 1;
			setText(mAmount + "");
			System.out.println("AmoutView onTouchEvent");
		}
		return super.onTouchEvent(event);
	}

	
	public void setMaxAmount(int maxAmount) {
		mMaxAmount = maxAmount;
	}

	public void setAmount(int amount) {
		this.mAmount = amount;
		setText("" + mAmount);
	}

}

注意的几个地方:

(1)必须要实现默认的三个构造方法。

(2)setText方法的参数是Charsequece,不能传int型参数,所以mAmount 后面加双引号。

(3)在onTouchEvent()方法中处理点击事件


然后在在布局文件中用完整的包名申明该控件即可使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值