购物车实现加减

xiaoxiao2021-02-27  206

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:focusable="true"     android:focusableInTouchMode="true"     tools:context="com.hiwhitley.demo.MainActivity">     <com.hiwhitley.demo.AmountView         android:id="@+id/amount_view"         android:layout_width="wrap_content"         android:layout_height="36dp"         android:layout_centerInParent="true"         android:layout_gravity="right"         android:layout_marginRight="15dp"         app:btnTextSize="14sp"         app:btnWidth="36dp"         app:tvWidth="50dp"/> </RelativeLayout> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:focusable="true"     android:divider="@drawable/divider"     android:background="@drawable/bg_amount_layout"     android:showDividers="middle"     android:orientation="horizontal">     <Button         android:id="@+id/btnDecrease"         android:layout_width="0dp"         android:layout_height="match_parent"         android:layout_weight="1"         android:gravity="center"         android:background="@drawable/btn_amount"         android:text="-"/>     <EditText         android:id="@+id/etAmount"         android:layout_width="0dp"         android:layout_height="match_parent"         android:minWidth="60dp"         android:layout_weight="2"         android:background="@null"         android:inputType="number"         android:gravity="center"         android:text="1"/>     <Button         android:id="@+id/btnIncrease"         android:layout_width="0dp"         android:layout_height="match_parent"         android:layout_weight="1"         android:gravity="center"         android:background="@drawable/btn_amount"         android:text="+"/> </LinearLayout> attrs <?xml version="1.0" encoding="utf-8"?> <resources>     <declare-styleable name="AmountView">         <!-- 左右2边+-按钮的宽度 -->         <attr name="btnWidth" format="dimension" />         <!-- 中间TextView的宽度 -->         <attr name="tvWidth" format="dimension" />         <!--<attr name="tvColor" format="color"/>-->         <attr name="tvTextSize" format="dimension"/>         <attr name="btnTextSize" format="dimension"/>     </declare-styleable> </resources> AmountView类 /**  * 自定义组件:购买数量,带减少增加按钮  * Created by hiwhitley on 2016/7/4.  */ public class AmountView extends LinearLayout implements View.OnClickListener, TextWatcher {     private static final String TAG = "AmountView";     private int amount = 1; //购买数量     private int goods_storage = 1; //商品库存     private OnAmountChangeListener mListener;     private EditText etAmount;     private Button btnDecrease;     private Button btnIncrease;     public AmountView(Context context) {         this(context, null);     }     public AmountView(Context context, AttributeSet attrs) {         super(context, attrs);         LayoutInflater.from(context).inflate(R.layout.view_amount, this);         etAmount = (EditText) findViewById(R.id.etAmount);         btnDecrease = (Button) findViewById(R.id.btnDecrease);         btnIncrease = (Button) findViewById(R.id.btnIncrease);         btnDecrease.setOnClickListener(this);         btnIncrease.setOnClickListener(this);         etAmount.addTextChangedListener(this);         TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(attrs, R.styleable.AmountView);         int btnWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_btnWidth, LayoutParams.WRAP_CONTENT);         int tvWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_tvWidth, 80);         int tvTextSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_tvTextSize, 0);         int btnTextSize = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_btnTextSize, 0);         obtainStyledAttributes.recycle();         LayoutParams btnParams = new LayoutParams(btnWidth, LayoutParams.MATCH_PARENT);         btnDecrease.setLayoutParams(btnParams);         btnIncrease.setLayoutParams(btnParams);         if (btnTextSize != 0) {             btnDecrease.setTextSize(TypedValue.COMPLEX_UNIT_PX, btnTextSize);             btnIncrease.setTextSize(TypedValue.COMPLEX_UNIT_PX, btnTextSize);         }         LayoutParams textParams = new LayoutParams(tvWidth, LayoutParams.MATCH_PARENT);         etAmount.setLayoutParams(textParams);         if (tvTextSize != 0) {             etAmount.setTextSize(tvTextSize);         }     }     public void setOnAmountChangeListener(OnAmountChangeListener onAmountChangeListener) {         this.mListener = onAmountChangeListener;     }     public void setGoods_storage(int goods_storage) {         this.goods_storage = goods_storage;     }     @Override     public void onClick(View v) {         int i = v.getId();         if (i == R.id.btnDecrease) {             if (amount > 1) {                 amount--;                 etAmount.setText(amount + "");             }         } else if (i == R.id.btnIncrease) {             if (amount < goods_storage) {                 amount++;                 etAmount.setText(amount + "");             }         }         etAmount.clearFocus();         if (mListener != null) {             mListener.onAmountChange(this, amount);         }     }     @Override     public void beforeTextChanged(CharSequence s, int start, int count, int after) {     }     @Override     public void onTextChanged(CharSequence s, int start, int before, int count) {     }     @Override     public void afterTextChanged(Editable s) {         if (s.toString().isEmpty())             return;         amount = Integer.valueOf(s.toString());         if (amount > goods_storage) {             etAmount.setText(goods_storage + "");             return;         }         if (mListener != null) {             mListener.onAmountChange(this, amount);         }     }     public interface OnAmountChangeListener {         void onAmountChange(View view, int amount);     } } 主界面: public class MainActivity extends AppCompatActivity {     private AmountView mAmountView;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         mAmountView = (AmountView) findViewById(R.id.amount_view);         mAmountView.setGoods_storage(50);         mAmountView.setOnAmountChangeListener(new AmountView.OnAmountChangeListener() {             @Override             public void onAmountChange(View view, int amount) {                 Toast.makeText(getApplicationContext(), "Amount=>  " + amount, Toast.LENGTH_SHORT).show();             }         });     } }
转载请注明原文地址: https://www.6miu.com/read-13276.html

最新回复(0)