Android商城购物车加减控件AddSubUtils
对购物车加减按钮控件的简单封装,几行代码就搞定,采用链式调用,而且样式支持自定义,并且在ListView中和RecyclerView中同样适用.这里的使用步骤讲的不是很细致,需要的朋友可以看下博客,里面讲了封装的过程和想法。如果你还在为商城购物车中的加减控件而烦恼,不妨试一下这个加减控件,相信你会爱上它。如果觉得有用,欢迎star和fork.
相关博客
实例效果
联系方式:
如果您有什么问题或者建议,欢迎加入qq群,这里还可以学习Kotlin。
Attributes属性(addsubutils布局文件中调用)
Attributes
forma
describe
editable
boolean
是否可以手动输入
location
string
输入框的位置(在左边还是右边),默认中间
ImageWidth
dimension
左右2边+-按钮的宽度
contentWidth
dimension
中间EditText的宽度
contentTextSize
dimension
中间EditText的字体大小
contentTextColor
color
中间字体的颜色
all_background
color/reference
整个控件的background
leftBackground
color/reference
左面控件的背景
rightBackground
color/reference
右面控件的背景
contentBackground
color/reference
中间控件的背景
leftResources
color/reference
左面控件的资源
rightResources
color/reference
右面控件的资源
使用步骤
1.依赖AddSubUtils
dependencies {
compile 'com.mengfei:AddSubUtils:1.5.0' // 最新版本
}
或者下载源码包,链接:https://github.com/Jmengfei/AddSubUtils ,引用本地lib,并且在build.gradle中添加:
dependencies {
compile project(':addsubutils')
}
2. 在xml代码中引用
android:id="@+id/add_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
你也可以自定义样式:
android:id="@+id/add_sub_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
jmf:editable="true"
jmf:ImageWidth="60dp"
jmf:contentTextColor="@color/colorText"
jmf:contentWidth="120dp"
jmf:contentTextSize="16sp"
jmf:contentBackground="@color/material_teal_200"
jmf:leftBackground="@drawable/left_selector"
jmf:rightBackground="@drawable/right_selector"
jmf:leftResources="@drawable/minus"
jmf:rightResources="@drawable/plus"/>
3.在Activity或者Fragment中配置AddSubUtils
AddSubUtils addSubUtils = (AddSubUtils) findViewById(R.id.add_sub);
addSubUtils.setBuyMax(30) // 最大购买数,默认为int的最大值
.setInventory(50) // 库存,默认为int的最大值
.setCurrentNumber(5) // 设置当前数,默认为1
.setStep(5) // 步长,默认为1
.setBuyMin(2) // 购买的最小值,默认为1
.setOnWarnListener(new AddSubUtils.OnWarnListener() {
@Override
public void onWarningForInventory(int inventory) {
Toast.makeText(MainActivity.this, "当前库存:" + inventory, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMax(int max) {
Toast.makeText(MainActivity.this, "超过最大购买数:" + max, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMin(int min) {
Toast.makeText(MainActivity.this, "低于最小购买数:" + min, Toast.LENGTH_SHORT).show();
}
});
4. 如果你是在ListView或者RecyclerView中使用:
holder.list_item_utils
.setStep(1)
.setBuyMax(30)
.setPosition(position) // 传入当前位置,一定要传,不然数据会错乱
.setCurrentNumber(dataBean.getValue())
.setInventory(50)
.setOnWarnListener(new AddSubUtils.OnWarnListener() {
@Override
public void onWarningForInventory(int inventory) {
Toast.makeText(ListViewActivity.this, "不能超过当前库存:" + inventory, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMax(int max) {
Toast.makeText(ListViewActivity.this, "超过最大购买数:" + max, Toast.LENGTH_SHORT).show();
}
@Override
public void onWarningForBuyMin(int min) {
Toast.makeText(ListViewActivity.this, "低于最小购买数:" + min, Toast.LENGTH_SHORT).show();
}
})
.setOnChangeValueListener(new AddSubUtils.OnChangeValueListener() {
@Override
public void onChangeValue(int value,int position) {
setValue(position,value); // 使用传回来的position设置数据
}
});
注意:这里setPosition()是一定要有的
采用的是链式调用,这里你只需要传入你关心的值即可。
关于我
一个想搞事情的Android攻城狮