您的位置:首页 > 其它

实现点击加减数字进行变化

2017-10-24 20:15 459 查看
//首先是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布局

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


//jiajian

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐