效果图:
AddDeleteView
public class AddDeleteView extends LinearLayout {
private TextView etNumber;
private OnAddDelClickListener listener;
//对外提供一个点击的回调接口
interface OnAddDelClickListener{
void onAddClick(View v);
void onDelClick(View v);
}
//对外提供调用接口的方法
public void setOnAddDelClickListener(OnAddDelClickListener listener) {
if(listener != null){
this.listener = listener;
}
}
public AddDeleteView(Context context) {
this(context,null);
}
public AddDeleteView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public AddDeleteView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context, attrs, defStyleAttr);
}
//创建方法将逻辑代码注入
private void initView(Context context, AttributeSet attrs, int defStyleAttr) {
//将布局文件初始化为控件
View.inflate(context,R.layout.layout_add_delete,this);
TextView txtDelete = (TextView) findViewById(R.id.txt_delete);
TextView txtAdd = (TextView) findViewById(R.id.txt_add);
etNumber = (TextView) findViewById(R.id.et_number);
txtDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
listener.onDelClick(view);
}
});
txtAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
listener.onAddClick(view);
}
});
}
//对外提供设置number值
public void setnumber(int number){
if(number>0&&number<=10){
etNumber.setText(number+"");
}
}
//获取控件中的值
public int getnumber(){
int number=0;
try {
//获取控件中的数值
String trim = etNumber.getText().toString().trim();
number = Integer.valueOf(trim);//将获取的字符串转换为int类型
}catch (Exception e){
number=0;
}
return number;
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private AddDeleteView adv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adv = (AddDeleteView) findViewById(R.id.adv_main);
//调用自定义接口实现接口中的方法
adv.setOnAddDelClickListener(new AddDeleteView.OnAddDelClickListener() {
@Override
public void onAddClick(View v) {
int origin = adv.getnumber();
origin++;
adv.setnumber(origin);
}
@Override
public void onDelClick(View v) {
int origin = adv.getnumber();
origin--;
adv.setnumber(origin);
}
});
}
}
XML文件存放在drawable中当做数量控件的背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="200dp"></corners>
<stroke android:color="@color/colorPrimaryDark" android:width="1dp"></stroke>
</shape>