这是我的编辑文字
<EditText
android:id="@+id/etWaardeVan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="number|numberDecimal"
android:scrollHorizontally="true"
android:singleLine="true"
/>
如何以编程方式仅允许输入一个点。
答案 0 :(得分:0)
这是你在找什么?
Set EditText Digits Programmatically
etWarDevan.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
答案 1 :(得分:0)
我删除最后输入的字符,如果它是一个点,之前有一个。
EditText field = view.findViewById(R.id.etWaardeVan);
field.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
String str = editable.toString();
String strold = str.substring(0, str.length() - 2);
String lastchar = str.substring(str.length() - 1);
if(strold.contains(".") && lastchar.equals(".")) field.setText(str);
}
});
提示:这仅在用户不跳回并在字符串中间输入点时才有效。您可能想要禁用光标移动。 (例如this或使用android:cursorVisible
)
或者(如果输入始终包含点),您可以创建两个不带点的EditTexts。
答案 2 :(得分:0)
这是我的解决方案,它有效:
dot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//only show one dot if user put more than one dot
if(input.contains(".")){
//then save what it has
input = textView.getText().toString();
}else {
//concat the input value
input=input+".";
}
}
});
答案 3 :(得分:0)
EditText 基本上是从 TextView 派生而来的,
void addTextChangedListener(TextWatcher watcher)
方法。 TextWatcher 具有回调,例如
abstract void afterTextChanged(Editable s)
您可以实施以过滤新文本以仅包含句点。
正则表达式:(?<=^| )\d+(\.\d+)?(?=$| )
示例
et1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
// Do something here with regex pattern
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
答案 4 :(得分:0)
将 EditText/TextInputEditText 中的 inputType 属性设置为 android:inputType="numberDecimal"
答案 5 :(得分:0)
替换:
android:inputType="number|numberDecimal"
与:
android:inputType="number"