بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

محدود کردن مقدار بزرگی عدد editText منظور تعداد اعداد یا حروف نیست

مدیریت گفتگو
120814 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان

چطور میشه مقدار بزرگی عدد وارد شده در ادیت تکست رو محدود کرد؟

به طور مثال منظور من اینه که داخل ادیت تکست تا عدد 20 بشه وارد کرد یعنی از 0 تا 20 البته اعداد اعشاری هم وارد میشه

و 20.5 یا 21 نشه وارد کرد

ممنون از پاسخ دوستان

نظرات

پاسخ‌ها 2

Hossein Lamei Ramandi 10 سال پیش

یه سرچی تو استک میزدید پیدا میکردید

یکلاس بسازید و این کد هارو توش قرار بدید(ادیتور سایت قاطی کرده شما خودت هرجا مشکل داشت یه فاصله یا اینتر بزن بین بعضی کارکتر ها فاصله از بین رفته )

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")});
   

نظرات

120814 10 سال پیش

به صورت اعشاری نمیشه وارد کرد فقط اعداد صحیح میشه اما من اعشاری نیاز دارم

اینطوری نوشتم بازم نشد

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;

}

}

 

نظرات

120814 10 سال پیش
با اصلاح این کد درست شد double input = Double.parseDouble(arg3.toString() + arg0.toString());

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .