布局
<!-- 整体布局,包括增加和减少商品数量的符号以及中间的商品数量 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- 减少商品数量的布局 --> <Button android:id="@+id/addbt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0157D3" android:text="-"> </Button> <!-- 商品数量的布局 --> <EditText android:id="@+id/edt" android:text="0" android:layout_width="wrap_content" android:layout_height="wrap_content"> </EditText> <!-- 增加商品数量的布局 --> <Button android:id="@+id/subbt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#0157D3" android:text="+"> </Button> <!-- 显示商品数量的布局 --> <TextView android:id="@+id/ttt" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout>main主页面
private Button btAdd, btReduce; private EditText edtNumber; int num=0; //数量 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btAdd=(Button)findViewById(R.id.addbt); btReduce=(Button) findViewById(R.id.subbt); edtNumber=(EditText) findViewById(R.id.edt); btAdd.setTag("+"); btReduce.setTag("-"); //设置输入类型为数字 edtNumber.setInputType(android.text.InputType.TYPE_CLASS_NUMBER); edtNumber.setText(String.valueOf(num)); SetViewListener(); } private void SetViewListener() { btAdd.setOnClickListener(new OnButtonClickListener()); btReduce.setOnClickListener(new OnButtonClickListener()); edtNumber.addTextChangedListener(new OnTextChangeListener()); } class OnButtonClickListener implements View.OnClickListener { @Override public void onClick(View v) { String numString = edtNumber.getText().toString(); if (numString == null || numString.equals("")) { num = 0; edtNumber.setText("0"); } else { if (v.getTag().equals("-")) { if (++num < 0) //先加,再判断 { num--; Toast.makeText(MainActivity.this, "请输入一个大于0的数字", Toast.LENGTH_SHORT).show(); } else { edtNumber.setText(String.valueOf(num)); } } else if (v.getTag().equals("+")) { if (--num < 0) //先减,再判断 { num++; Toast.makeText(MainActivity.this, "请输入一个大于0的数字", Toast.LENGTH_SHORT).show(); } else { edtNumber.setText(String.valueOf(num)); } } } } } /** * EditText输入变化事件监听器 */ class OnTextChangeListener implements TextWatcher { @Override public void afterTextChanged(Editable s) { String numString = s.toString(); if(numString == null || numString.equals("")) { num = 0; } else { int numInt = Integer.parseInt(numString); if (numInt < 0) { Toast.makeText(MainActivity.this, "请输入一个大于0的数字", Toast.LENGTH_SHORT).show(); } else { //设置EditText光标位置 为文本末端 edtNumber.setSelection(edtNumber.getText().toString().length()); num = numInt; } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }