我正在寻找类似于日期选择器对话框中单个部分的东西。一个视图,允许您输入整数(仅限整数),并且可以限制这些数字(例如在1和10之间),您可以使用键盘或视图本身中的箭头。它存在吗?
这是为对话框而设计的。一个现成的对话框可请求整数也会有所帮助。
我正在寻找类似于日期选择器对话框中单个部分的东西。一个视图,允许您输入整数(仅限整数),并且可以限制这些数字(例如在1和10之间),您可以使用键盘或视图本身中的箭头。它存在吗?
这是为对话框而设计的。一个现成的对话框可请求整数也会有所帮助。
NumberPicker
控件可能是你想要的。不幸的是,它位于 com.android.internal.Widget.NumberPicker
中,我们无法通过正常方式访问它。
有两种使用方法:
这是在布局中使用它的 XML:
<com.android.internal.widget.NumberPicker
android:id="@+id/picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
这里是设置NumberPicker设置的反射代码(我没有测试过):
Object o = findViewById(R.id.picker);
Class c = o.getClass();
try
{
Method m = c.getMethod("setRange", int.class, int.class);
m.invoke(o, 0, 9);
}
catch (Exception e)
{
Log.e("", e.getMessage());
}
由于这是一个内部小部件而不是SDK中的一部分,如果使用反射可能会破坏未来的兼容性。最安全的方法是从源代码自己开发。
此信息的原始来源在此 Google Group 中共享。
正如其他地方提到的,NumberPicker现在已经作为API 11(Android 3.0)的一部分包含在Android SDK中:
http://developer.android.com/reference/android/widget/NumberPicker.html
对于 Android < 3.0,您可以使用此处的代码:
https://github.com/novak/numpicker-demo
https://github.com/mrn/numberpicker
您可以简单地使用 EditText
并将 inputType
定义为 number
。例如:
<EditText
android:id="@+id/etNumberInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:inputType="number" />
如果要将最大值限制为10,可以通过编程实现:
final EditText et = findViewById(R.id.etNumberInput);
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if (Integer.parseInt(et.getText().toString()) > 10) {
et.setError("***Your error here***");
// your logic here; to limit the user from inputting
// a value greater than specified limit
}
}
});
这应该能够达到你的目标。
android:inputType="number"
属性。<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:inputType="number" android:layout_width="wrap_content"></EditText>