Question

Je edittext où je veux entrer la valeur en pourcentage de la valeur i.e. décimales, donc je veux limiter l'utilisateur d'entrer seulement valeur inférieure à 100 dans le editText.

Exemple:. 1) s'il veut entrer valeur plus de 100 , il ne devrait pas lui permettre pour entrer dans cette

2) S'il veut entrer t0 valeur décimale inférieure à 100 i.e. 50,5444 il devrait lui permettre pour entrer cette valeur

Je l'ai aussi trouvé ce lien où je peux installer le filtre pour un maximum de valeur entière à 100, mais sa ne me permettant pas d'entrer la valeur décimale

lien: http : //tech.chitgoks.com/2011/06/27/android-set-min-max-value-an-edittext-accepts/

aide quelqu'un peut me.

Était-ce utile?

La solution

Hey vous pouvez utiliser le TextWatcher , l'appliquer à votre EditText et mettre en œuvre les trois méthodes qu'il fournit. Ensuite, lorsque vous insérez une nouvelle valeur, vous pouvez utiliser une expression régulière pour vérifier sa validité.

it helps!

Autres conseils

Voici le code I complet de mise en œuvre utilisé

editTextSpLinePercent.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    }

    @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
        String enteredValue = s.toString();
        if(checkNullValues(enteredValue)) {
            if(Float.parseFloat(enteredValue.trim()) >100.0f){
                AlertDialog.Builder builder = new AlertDialog.Builder(SpecialDiscountLineActivity.this);
                // builder.setCancelable(true);
                builder.setMessage("Percentage Value should be Less than 100");

                builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                         editTextSpLinePercent.setText("");
                    }
                });           
                builder.show();            
            }
        }
    }
});


public static boolean checkNullValues(String valueToCheck) {
    //Log.i("Log","CheckForNullValues : "+valueToCheck);
    if(!(valueToCheck == null)) {
        String valueCheck = valueToCheck.trim();
        if(valueCheck.equals("") || valueCheck.equals("0")  ) {
            //  Log.i("Log","Returning false 0 or Blank");
            return false;
        }
        return true;
    }
    //Log.i("Log","Returning false null");
    return false;
}

Vous pouvez modifier réellement le code utile sniplet fourni dans le lien mentionné dans la question comme suit. le cas échéant vous pouvez également inclure le nombre de décimales max vous voulez que le pourcentage d'avoir et d'utiliser le modèle pour matcher retour "" si l'entrée ne correspond pas au modèle prévu.

private class PercentageInputFilter implements InputFilter {
    private float min;
    private float max;

    PercentageInputFilter(float min, float max) {
        this.min = min;
        this.max = max;
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        try {
            // Get input
            String stringToMatch = dest.toString() + source.toString();
            float input = Float.parseFloat(stringToMatch);

            // Check if the input is in range.
            if (isInRange(min, max, input)) {
                // return null to accept the original replacement in case the format matches and text is in range.
                return null;
            }
        } catch (NumberFormatException nfe) {
        }
        return "";
    }

    private boolean isInRange(float min, float max, float input) {
        return input >= min && input <= max;
    }
}

Vous pouvez l'utiliser comme:

new PercentageInputFilter((float) 0.00, (float) 100.00);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top