安卓键盘显示数字

时间:2016-05-30 12:17:46

标签: java android keyboard

我试图展示Android键盘,它只显示数字和小数点,它在联想等设备上运行良好,但它不适用于像三星这样的设备。但是当我安装一个应用程序时,键盘在上述设备中的工作方式相同。  我想知道它是否是自定义键盘。即使我尝试添加键盘代码:

 amt.setRawInputType(Configuration.KEYBOARD_12KEY);

但它没有用。我想知道如何获得与下图相同的键盘,该键盘适用于所有设备。 enter image description here

enter image description here

5 个答案:

答案 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);