在Android的软键盘中,您可以使用android:inputType="numberDecimal"
将软键盘设置为显示数字而不是a-z键盘。但是,如果我只想显示顶部数字行1 2 3 4 5 6 7 8 9 0
,而不是以下以@ # $ % ...
开头的行,该怎么办呢?
谢谢您的倾听!
在Android的软键盘中,您可以使用android:inputType="numberDecimal"
将软键盘设置为显示数字而不是a-z键盘。但是,如果我只想显示顶部数字行1 2 3 4 5 6 7 8 9 0
,而不是以下以@ # $ % ...
开头的行,该怎么办呢?
谢谢您的倾听!
android:inputType="phone"
android:digits="1234567890"
是一个选项
您只需在代码中添加此行:
input.setRawInputType(Configuration.KEYBOARD_12KEY);
这将仅显示数字键盘。
我找到的最接近的东西是电话号码键盘(在你的EditText
上设置inputType="phone"
)。
接受的答案对我没有用(在OnePlus 3t和三星Galaxy S6 / S7手机上进行了测试)。
这个解决方案使用numberPassword,但覆盖了EditText的默认转换方法,以显示字符而不是显示点。
<EditText
android:id="@+id/userid"
android:inputType="numberPassword"
android:maxLength="6"
/>
// Numeric 6 character user id
EditText input = findViewById(R.id.userid);
// Process input and show characters instead of dots
input.setTransformationMethod(SingleLineTransformationMethod.getInstance());
我刚在这里回答了一个问题,但为了简单起见,再次发布:
似乎Android已经添加了我们所需的功能。这是我用于简单的EditText数字输入的xml:
android:inputType="numberPassword"
android:digits="0123456789"
android:singleLine="true"
android:ems="4"
android:textColor="@android:color/black"
android:gravity="center"
我尝试了被接受的答案,但它并没有起作用。它一直显示其他不想要的字符
我找到了一个实现我想要行为的方法,通过将输入类型更改为numberPassword
,然后禁用密码点。
textInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
textInput.transformationMethod = SingleLineTransformationMethod()
我已经在Xamarin中为Android实现了这个功能,所以我的代码是用C#编写的。但是原则保持不变。您可以将edittext的属性设置为android:inputType =“numberPassword”
。
然后,在您的代码中,您可以将自定义转换方法附加到您的edittext视图上。
holder.edtxtQty.TransformationMethod = new HiddenPasswordTransformationMethod();
private class HiddenPasswordTransformationMethod : global::Android.Text.Method.PasswordTransformationMethod
{
public override Java.Lang.ICharSequence GetTransformationFormatted(Java.Lang.ICharSequence source, View view)
{
return new PasswordCharSequence(source);
}
}
private class PasswordCharSequence : Java.Lang.Object, Java.Lang.ICharSequence
{
private char DOT = '\u2022';
private Java.Lang.ICharSequence _source;
public PasswordCharSequence(Java.Lang.ICharSequence source)
{
_source = source;
}
public char CharAt(int index)
{
return _source.CharAt(index);
}
public int Length()
{
return _source.Length();
}
public Java.Lang.ICharSequence SubSequenceFormatted(int start, int end)
{
return _source.SubSequenceFormatted(start, end); // Return default
}
public IEnumerator<char> GetEnumerator()
{
return _source.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return _source.GetEnumerator();
}
}
从代码:
et.setInputType(InputType.TYPE_CLASS_NUMBER)