我正在寻找类似日期选择器对话框的各个部分。一个视图,允许您输入可以限制的整数(仅限整数)(例如,在1到10之间),您可以在其中使用键盘或视图中的箭头。它存在吗?
用于对话。一个现成的对话框来请求一个整数也会有所帮助。
答案 0 :(得分:23)
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中共享。
答案 1 :(得分:7)
答案 2 :(得分:4)
与mentioned elsewhere一样,自API 11(Android 3.0)起,Android SDK中现已提供NumberPicker:
http://developer.android.com/reference/android/widget/NumberPicker.html
对于Android&lt; 3.0,你可以在这里使用代码:
https://github.com/novak/numpicker-demo
https://github.com/mrn/numberpicker
答案 3 :(得分:0)
您可以使用EditText使用android:inputType="number"
<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:inputType="number" android:layout_width="wrap_content"></EditText>
答案 4 :(得分:0)
您可以简单地使用 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
}
}
});
这应该可以达到您的目标。