//首先是main中的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="zhoukao.demo01.com.jiajianqi.MainActivity"> //要记住这里的jiajian是你自己的类
<zhoukao.demo01.com.jiajianqi.Jiajian android:id="@+id/Myjiajian" app:butsize="15sp" app:textsize="15sp" app:butwidth="80dp" app:textwith="80dp" android:layout_width="wrap_content" android:layout_height="wrap_content"></zhoukao.demo01.com.jiajianqi.Jiajian> </LinearLayout>
//mainAcitivity
package zhoukao.demo01.com.jiajianqi; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Jiajian myjiajian= (Jiajian) findViewById(R.id.Myjiajian); myjiajian.setGoods_storage(50); myjiajian.setMytextlistner(new Jiajian.OnTextListener() { @Override public void onAmountChange(View view, int amount) { Toast.makeText(MainActivity.this, "amount=="+amount, Toast.LENGTH_SHORT).show(); } }); } }
//jiajian布局
//jiajian<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_marginTop="5dp" android:id="@+id/bt_jian" android:layout_width="wrap_content" android:layout_height="50dp" android:background="#fff" android:text="-" android:textSize="40sp" /> <EditText android:inputType="number" android:cursorVisible="false" android:text="1" android:gravity="center" android:id="@+id/ed_text" android:layout_width="40dp" android:layout_height="50dp" android:background="@null" /> <Button android:layout_marginTop="5dp" android:id="@+id/bt_jia" android:background="#fff" android:layout_width="wrap_content" android:layout_height="50dp" android:text="+" android:textSize="40sp" /> </LinearLayout>
package zhoukao.demo01.com.jiajianqi; import android.content.Context; import android.content.res.TypedArray; import android.support.annotation.Nullable; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout;
public class Jiajian extends LinearLayout implements View.OnClickListener, TextWatcher { private Button bt_jia; private Button bt_jian; private EditText ed_text; private int amount = 1; //购买数量 private int goods_storage = 1; //商品库 private OnTextListener mytextlistner; public Jiajian(Context context) { this(context,null); } public Jiajian(Context context, @Nullable AttributeSet attrs) { super(context, attrs); View view = View.inflate(context, R.layout.mjiajian, this); bt_jia=view.findViewById(R.id.bt_jia); bt_jian=view.findViewById(R.id.bt_jian); bt_jia.setOnClickListener(this); bt_jian.setOnClickListener(this); ed_text=view.findViewById(R.id.ed_text); ed_text.setOnClickListener(this); ed_text.addTextChangedListener(this); TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.Jiajian); int btnwidth = array.getDimensionPixelSize(R.styleable.Jiajian_butwidth, 80); int tvwidth = array.getDimensionPixelSize(R.styleable.Jiajian_textwith, 80); int textsize = array.getDimensionPixelSize(R.styleable.Jiajian_textsize, 20); int btnsize = array.getDimensionPixelSize(R.styleable.Jiajian_butsize, 20); array.recycle(); LayoutParams btnParams = new LayoutParams(btnwidth, LayoutParams.MATCH_PARENT); bt_jia.setLayoutParams(btnParams); bt_jian.setLayoutParams(btnParams); if (btnsize != 0) { bt_jia.setTextSize(TypedValue.COMPLEX_UNIT_SP, btnsize); bt_jian.setTextSize(TypedValue.COMPLEX_UNIT_SP, btnsize); } LayoutParams textParams = new LayoutParams(tvwidth, LayoutParams.MATCH_PARENT); ed_text.setLayoutParams(textParams); if (textsize != 0) { ed_text.setTextSize(textsize); } } public Jiajian(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setMytextlistner(OnTextListener mytextlistner) { this.mytextlistner = mytextlistner; } @Override public void onClick(View view) { int i = view.getId(); if (i == R.id.bt_jian) { if (amount > 1) { amount--; ed_text.setText(amount + ""); } ed_text.setCursorVisible(false); } else if (i == R.id.bt_jia) { if (amount < goods_storage) { amount++; ed_text.setText(amount + ""); } ed_text.setCursorVisible(false); } if(i==R.id.ed_text){ ed_text.setCursorVisible(true); } ed_text.clearFocus(); } public void setGoods_storage(int goods_storage) { this.goods_storage = goods_storage; } @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable s) { if (s.toString().isEmpty()) return; amount = Integer.valueOf(s.toString()); if (amount > goods_storage) { ed_text.setText(goods_storage + ""); return; } if(mytextlistner!=null){ mytextlistner.onAmountChange(this,amount); } } public interface OnTextListener { void onAmountChange(View view, int amount); } }