android edittext左右两边加减按钮,并且监听edittext不能小于0
时间: 2024-04-01 14:32:51 浏览: 61
实现这个功能,可以自定义一个带有加减按钮的布局,然后将其作为EditText的左右drawable,并设置相应的点击事件。
以下是一个简单的实现方法:
1. 自定义一个带有加减按钮的布局,例如:
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<ImageButton
android:id="@+id/btn_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_minus"
android:background="@null" />
<EditText
android:id="@+id/et_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:text="0"
android:textAlignment="center" />
<ImageButton
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add"
android:background="@null" />
</LinearLayout>
```
2. 在Activity或Fragment中,将该布局作为EditText的左右drawable,并设置相应的点击事件:
```
EditText editText = findViewById(R.id.edit_text);
ViewGroup layout = findViewById(R.id.layout_number);
ImageButton btnMinus = layout.findViewById(R.id.btn_minus);
ImageButton btnAdd = layout.findViewById(R.id.btn_add);
final EditText etNumber = layout.findViewById(R.id.et_number);
editText.setCompoundDrawablesWithIntrinsicBounds(layout, null, null, null);
btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int number = Integer.parseInt(etNumber.getText().toString());
if (number > 0) {
number--;
etNumber.setText(String.valueOf(number));
}
}
});
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int number = Integer.parseInt(etNumber.getText().toString());
number++;
etNumber.setText(String.valueOf(number));
}
});
etNumber.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
int number = Integer.parseInt(etNumber.getText().toString());
if (number < 0) {
etNumber.setText("0");
}
}
}
});
```
3. 在点击加减按钮时,根据当前EditText的值进行加减操作并更新EditText的显示。在失去焦点时,检查EditText的值是否小于0,如果小于0则将其设置为0。
阅读全文