Android InputType布局参数 - 如何允许负小数?

EBM*_*EBM 52 layout android

我有一个布局,有三个字段用于输入三个地图坐标.到现在为止还挺好.我在布局中使用android:inputType ="numberDecimal".当进入该字段时,用户获得数字小键盘.还好.

但是,当需要输入负坐标时,没有明显的方法可以做到这一点.

23.2342工作正常.232.3421工作正常.无法输入-11.23423 - 无法输入前导负号,甚至无法将坐标包装在()中.

我确信我可以将其更改为直接文本inputType,然后使用正则表达式来验证输入的内容实际上是一个数字坐标,处理错误消息回发给用户等等.但是我会而不是去那条路.

我用谷歌搜索和Stackoverflowed这个问题几个小时没有运气.有什么建议?

Kev*_*ndt 134

除非我遗漏了一些东西,否则这就是你所需要的

android:inputType="numberDecimal|numberSigned"
Run Code Online (Sandbox Code Playgroud)


小智 7

请使用此代码

 et.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_CLASS_NUMBER);
Run Code Online (Sandbox Code Playgroud)


小智 5

您必须在布局 (*.xml) 的 EditText 标签中添加 numberSigned

 <EditText android:inputType="numberDecimal|numberSigned"></EditText>
Run Code Online (Sandbox Code Playgroud)

祝你好运!


EBM*_*EBM -1

最终对每个轴使用模式和匹配器,使实际的文本输入格式保持开放。

三轴字段,提交按钮触发onSave。字段经过验证,要么发生插入,要么向提交者发出有关轴字段所需格式的错误消息。正确的格式是 1-3 位数字,可以选择以“-”开头,也可以选择后跟“.”。和附加数字。

试试这个代码:

private View.OnClickListener onSave=new View.OnClickListener(){
    public void onClick(View v){
        Pattern xAxis = Pattern.compile("[-+]?([0-9]*\\.)?[0-9]+");
        Matcher mForX = xAxis.matcher(xaxis.getText().toString());

        Pattern yAxis = Pattern.compile("[-+]?([0-9]*\\.)?[0-9]+");
        Matcher mForY = yAxis.matcher(yaxis.getText().toString());

        Pattern zAxis = Pattern.compile("[-+]?([0-9]*\\.)?[0-9]+");
        Matcher mForZ = zAxis.matcher(zaxis.getText().toString());

        //If Axis X and Axis Y and Axis Z are all valid entries, the proceed.
        if(mForX.find() && mForY.find() && mForZ.find()){
             //handle insert or update statement here
        }else{
             //give error message regarding correct Axis value format
        }
   }
Run Code Online (Sandbox Code Playgroud)

}