Android 如何在edittext中强制小数点位于两位数之后?
如何在android中设置两个整数后的小数点,并将限制设置为仅55位?在搜索了很多之后,我在这里发布了我的问题。我有一个Android 如何在edittext中强制小数点位于两位数之后?,android,android-edittext,Android,Android Edittext,如何在android中设置两个整数后的小数点,并将限制设置为仅55位?在搜索了很多之后,我在这里发布了我的问题。我有一个Edittext和一个android:inputType=“number”。我可以将EditText的最大限制设置为55位。我希望用户能够键入介于0到55之间的小数位数,如24.22或52.88 请告诉我如何才能做到这一点? 这是我的密码 public class FuelCostCalculator extends DialogFragment { EditText
Edittext
和一个android:inputType=“number”
。我可以将EditText
的最大限制设置为55位。我希望用户能够键入介于0到55之间的小数位数,如24.22或52.88
请告诉我如何才能做到这一点?
这是我的密码
public class FuelCostCalculator extends DialogFragment {
EditText etLocation, etKilo, etLiter, etFuelCost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.fullscreen_dialog);
}
private void init(View view) {
//this is my editText
etLiter = view.findViewById(R.id.etLiter);
InputFilterMinMax filter = new InputFilterMinMax("0", "5499") {};
etLiter.setFilters(new InputFilter[]{filter});
}
}
我的过滤类是:
public class InputFilterMinMax implements InputFilter {
private int min, max;
public InputFilterMinMax(int min, int max) {
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max) {
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
公共类InputFilterMax实现InputFilter{
私有整数最小值,最大值;
公共InputFilterMinMax(最小整数,最大整数){
this.min=min;
this.max=max;
}
公共InputFilterMinMax(字符串最小值、字符串最大值){
this.min=整数.parseInt(min);
this.max=Integer.parseInt(max);
}
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
试一试{
int input=Integer.parseInt(dest.toString()+source.toString());
if(isInRange(最小、最大、输入))
返回null;
}catch(NumberFormatException nfe){}
返回“”;
}
私有布尔值isInRange(int a、int b、int c){
返回b>a?c>=a&&c=b&&c检查此答案。虽然答案不太干净,但它可以根据您的需要工作。假设actAddItemFromDropdownList是您的编辑文本,并且您已经在Xml中设置了最大位数限制
int max =0;
String text ="";
actAddItemFromDropdownList.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if(actAddItemFromDropdownList.getText().length()>0){
if(text.equals(actAddItemFromDropdownList.getText().toString())){
text = "";
}else {
text = actAddItemFromDropdownList.getText().toString();
max = max + 1;
if (max == 2) {
text = text + ".";
max = 0;
actAddItemFromDropdownList.setText(text);
actAddItemFromDropdownList.setSelection(actAddItemFromDropdownList.getText().length());
}
}
}
}
});
试试看,如果有效,标记为选定答案。您可以使用文本观察者编辑文本。文本观察者dit不能解决我的问题您想要实现什么?@Sharatikaka您读过我的问题吗?我想您想要应用句点(句点、句点)每两位之后。每两位用户按下一次,它们就应该绘图?谢谢,让我检查一下兄弟。如果我输入5位,它不起作用兄弟,它会自动在第4位之后放一个小数点。我所做的是理解你的问题,特别是我在评论中所说的。它会立即自动标记小数点y 2数字它也会在4位数后标记另一个小数。BDW感谢您的时间。希望您理解。