简易实现自定义购物加减器

package com.liu.asus.jishi20171020;

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.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

/**
 * Created by asus on 2017/10/20.
 */

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);
    }
}

//Main
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();
            }
        });
    }

<com.liu.asus.jishi20171020.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"
   />
s
//attrs
<declare-styleable name="Jiajian">
    <attr name="textsize" format="dimension">15</attr>
    <attr name="butsize" format="dimension">15</attr>
    <attr name="butwidth" format="dimension">30</attr>
    <attr name="textwith" format="dimension">30</attr>

</declare-styleable>

//myjiajian
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <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>

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值