محدود کردن مقدار بزرگی عدد editText منظور تعداد اعداد یا حروف نیست
سلام دوستان
چطور میشه مقدار بزرگی عدد وارد شده در ادیت تکست رو محدود کرد؟
به طور مثال منظور من اینه که داخل ادیت تکست تا عدد 20 بشه وارد کرد یعنی از 0 تا 20 البته اعداد اعشاری هم وارد میشه
و 20.5 یا 21 نشه وارد کرد
ممنون از پاسخ دوستان
یه سرچی تو استک میزدید پیدا میکردید
یکلاس بسازید و این کد هارو توش قرار بدید(ادیتور سایت قاطی کرده شما خودت هرجا مشکل داشت یه فاصله یا اینتر بزن بین بعضی کارکتر ها فاصله از بین رفته )
package com.test;
import android.text.InputFilter;
import android.text.Spanned;
public classInputFilterMinMax implementsInputFilter{
private int min, max;
publicInputFilterMinMax(int min,int max){
this.min = min;
this.max = max;}
publicInputFilterMinMax(String min,String max){
this.min =Integer.parseInt(min);
this.max =Integer.parseInt(max);
}
@Override
public CharSequence filter(CharSequence source,int start,intend,Spanned dest,int dstart,int dend){
try{
int input =Integer.parseInt(dest.toString()+ source.toString());
if(isInRange(min, max, input))
returnnull;
}catch(NumberFormatException nfe){
}
return"";privateboolean isInRange(int a,int b,int c){
return b > a ? c >= a && c <= b : c >= b && c <= a;
}}
بعد این کد هارو تو اکتیویتی که ادیت تکستتون توشه قرار بدید
EditText et =(EditText) findViewById(R.id.myEditText);
et.setFilters(newInputFilter[]{newInputFilterMinMax("1","12")});
به صورت اعشاری نمیشه وارد کرد فقط اعداد صحیح میشه اما من اعشاری نیاز دارم
اینطوری نوشتم بازم نشد
publicclassInputFilterMinMaximplementsInputFilter{
privatedoublemin,max;
publicInputFilterMinMax(doublemin,doublemax){
this.min=min; this.max=max; }
this.min=Double.parseDouble(min);
publicInputFilterMinMax(Stringmin,Stringmax){
this.max=Double.parseDouble(max);}
@Override
publicCharSequencefilter(CharSequencearg0,intarg1,intarg2,Spannedarg3,intarg4,intarg5){
// TODO Auto-generated method stub
try{
int input =Integer.parseInt(arg3.toString()+arg0.toString());
if(isInRange(min,max, input))
returnnull;
}
catch(NumberFormatException nfe){}
return"";
}
privatebooleanisInRange(doublea,doubleb,doublec){
returnb>a?c>=a&&c<=b:c>=b&&c<=a;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .