2017-12-13 3 views
-1

Wie kann ich den Bruchpunkt nach zwei ganzen Zahlen in Android setzen und das Limit auf 55 Ziffern setzen? Nachdem ich viel gesucht habe, poste ich hier mein Problem. Ich habe eine Edittext mit einer android:inputType="number". Ich bin in der Lage, die Höchstgrenze für die EditText auf 55 Ziffern zu setzen. Ich will Benutzer kann Bruchzahl eingeben auch zwischen 0 bis 55 Ziffern wie 24.22 oder 52.88.Wie erzwinge ich den Dezimalpunkt nach zwei Ziffern im Editiertext?

Kann mir bitte bitte sagen, wie kann ich das erreichen? Hier ist mein Code.

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

    } 
    } 

Meine Filterklasse ist:

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

Jede Art von Hilfe ist willkommen:

+0

können Sie Text Watcher auf Text bearbeiten. – Lucky

+0

TextWatcher löst mein Problem nicht – Champandorid

+0

was Sie erreichen möchten? –

Antwort

-1

prüfen diese Antwort. Es ist zwar nicht so sauber, aber es wird nach Ihren Bedürfnissen funktionieren. Angenommen, dass actAddItemFromDropdownList Ihr Bearbeitungstext ist und Sie in Ihrem Xml die maximale Anzahl an Ziffern festgelegt haben.

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



     } 
    }); 

versuchen Sie es und wenn es funktioniert markieren Sie als ausgewählte Antwort.

+0

Danke lassen Sie mich Bruder überprüfen. – Champandorid

+0

hat es funktioniert? .... –

+0

hat nicht funktioniert Bruder, wenn ich 5 Ziffern eingegeben hat, wird automatisch einen Dezimalpunkt nach dem vierten gesetzt. – Champandorid

Verwandte Themen