Android 購物車加減功能的實(shí)現(xiàn)代碼
Android 實(shí)現(xiàn)購物車加減功能,效果圖如下所示:
public class adderView extends LinearLayout implements View.OnClickListener, TextWatcher { private int amount = 0; //購買數(shù)量 private int goods_storage = Integer.MAX_VALUE; //商品庫存 private OnAmountChangeListener mListener; private EditText etAmount; private Button btnDecrease; private Button btnIncrease; public adderView(Context context) { this(context, null); } public adderView(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.number_adder, 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, 100); int tvWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.AmountView_tvWidth, 200); 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; } public void setTextCount(int count){ this.amount = count; this.etAmount.setText(amount+""); } @Override public void onClick(View v) { int i = v.getId(); if (i == R.id.btnDecrease) { if (amount > 0) { 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 (amount == 0){ // btnDecrease.setBackgroundResource(R.drawable.jian); } if (amount > 0){ // btnDecrease.setBackgroundResource(R.drawable.lvjian); } if (mListener != null) { mListener.onAmountChange(this, amount); } } public interface OnAmountChangeListener { void onAmountChange(View view, int amount); }
<?xml version="1.0" encoding="utf-8"?> <com.zhy.autolayout.AutoLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="90px" android:focusable="true" android:divider="@drawable/divder" android:background="@drawable/bg_amout_layout" android:showDividers="middle" android:orientation="horizontal"> <Button android:id="@+id/btnDecrease" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:background="@drawable/jian"/> <EditText android:id="@+id/etAmount" android:layout_width="200px" android:layout_height="match_parent" android:minWidth="150px" android:layout_weight="2" android:background="@null" android:inputType="number" android:textSize="13sp" android:text="0" android:gravity="center"/> <Button android:id="@+id/btnIncrease" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:background="@drawable/jia"/> </com.zhy.autolayout.AutoLinearLayout>
到此這篇關(guān)于Android 購物車加減功能的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)android 購物車加減內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android開發(fā)之全屏與非全屏的切換設(shè)置方法小結(jié)
這篇文章主要介紹了Android開發(fā)之全屏與非全屏的切換設(shè)置方法,結(jié)合實(shí)例形式分析了Android全屏切換靜態(tài)與動態(tài)兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2017-08-08PullToRefreshListView實(shí)現(xiàn)多條目加載上拉刷新和下拉加載
這篇文章主要為大家詳細(xì)介紹了PullToRefreshListView實(shí)現(xiàn)多條目加載上拉刷新和下拉加載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01Android 第三方應(yīng)用接入微信平臺研究情況分享(二)
微信平臺開放后倒是挺火的,許多第三方應(yīng)用都想試下,這里把我的整個研究情況給出來,希望可以共同學(xué)習(xí),感興趣的朋友可以了解下2013-01-01Android用HandlerThread模擬AsyncTask功能(ThreadTask)
本文主要講用HandlerThread模擬AsyncTask功能,這里提供實(shí)例代碼以便參考,有需要的小伙伴可以參考下2016-07-07Android RxJava創(chuàng)建操作符Interval
這篇文章主要為大家詳細(xì)介紹了Android RxJava創(chuàng)建操作符Interval的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12ViewFlipper實(shí)現(xiàn)上下翻滾輪播效果
這篇文章主要為大家詳細(xì)介紹了ViewFlipper實(shí)現(xiàn)上下翻滾輪播效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Flexbox+ReclyclerView實(shí)現(xiàn)流式布局
這篇文章主要為大家詳細(xì)介紹了Flexbox+ReclyclerView實(shí)現(xiàn)流式布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11Kotlin實(shí)現(xiàn)在類里面創(chuàng)建main函數(shù)
這篇文章主要介紹了Kotlin實(shí)現(xiàn)在類里面創(chuàng)建main函數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android仿微信、qq點(diǎn)擊右上角加號彈出操作框
這篇文章主要為大家詳細(xì)介紹了Android仿微信、qq點(diǎn)擊右上角加號彈出操作框,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04