我试图展示Android键盘,它只显示数字和小数点,它在联想等设备上运行良好,但它不适用于像三星这样的设备。但是当我安装一个应用程序时,键盘在上述设备中的工作方式相同。 我想知道它是否是自定义键盘。即使我尝试添加键盘代码:
amt.setRawInputType(Configuration.KEYBOARD_12KEY);
答案 0 :(得分:2)
试试这个
按Xml
<EditText
android:inputType="numberDecimal|number"
android:digits="0123456789."
/>
按Java
input.setInputType(InputType.TYPE_CLASS_NUMBER); //OR
input.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
这可能对你有所帮助。
答案 1 :(得分:2)
尝试添加逗号&#34;,&#34;。它可能会导致不同的数字格式。
<EditText
android:inputType="numberDecimal|number"
android:digits="0123456789.," />
答案 2 :(得分:2)
试试这一行 amt.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
答案 3 :(得分:2)
我最近不得不在工作中解决这个问题。在某些版本中,Samsung键盘应用程序只有一个负按钮和十进制按钮。我此刻没有截图,明天我可以尝试抓一个。为了在选择EditText时显示此按钮,请在XML端添加:
android:inputType="numberDecimal|numberSigned"
android:digits="0123456789.-"
然后在带有EditText的Activity / Fragment中,找到EditText并应用正则表达式以确保它是一个数字。
EditText editText = (EditText) findViewById(R.id.your_edit_text);
final String regex = "^\\-?(\\d*|\\d*\\.\\d+)$";
editText.setFilters(new InputFilter[]{ new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
//if we are adding text
if (end > start) {
String destinationString = dest.toString();
String resultingTxt = destinationString.substring(0, dstart) + source.subSequence(start, end) + destinationString.substring(dend);
// return null to accept the input or empty to reject it
return resultingTxt.matches(regex) ? null : "";
}
// removing: always accept
return null;
}
}});
重要提示:另外请确保您没有为EditText附加NumberKeyListener。如果你有一个NumberKeyListener附加到EditText,三星键盘将隐藏&#34; - /。&#34;按钮你试图显示。
编辑:如果您不想要负数,也可以更改正则表达式。
final String regex = "^(\\d*|\\d*\\.\\d+)$";
答案 4 :(得分:1)
将此属性添加到XML中的EditText
android:inputType="numberDecimal"
试试这个
的java
editText.setInputType(InputType.TYPE_CLASS_NUMBER);