2014-04-11 43 views
0

在我的edittext中,我設置了TextWatcher。我希望它自動設置千分隔符。在Android中設置千分隔符EditText無法正常工作

getDoubleValue用於獲取我的EditText的值,而點(在德國,千分隔符是「」)

如果一些文字改變了,我得到的編輯從EditText上,取出監聽器防止循環,獲取doubleValue,清除可編輯的值並用千分隔符設置值。 但只有最後一點是可見的。 如果我使用setText()來代替,它可以工作,但速度很慢。

this.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      Log.d("debug", "ontextchanged"); 
      Editable edit = getText(); 

      InputField.this.removeTextChangedListener(this); 
      String ausg = NumberFormat.getInstance(Locale.GERMAN).format(
        getDoubleValue()); 
      edit.clear(); 
      Log.d("debug", ausg); 
      edit.append(ausg); 
      Log.d("debug", getText().toString()); 
      InputField.this.addTextChangedListener(this); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 


     } 

     @Override 
     public void afterTextChanged(Editable s) { 


     } 
    }); 

public double getDoubleValue() { 
    Log.d("debug", "getDoubleValue"); 
    try { 
     return Double.parseDouble(getText().toString() 
       .replaceAll("\\.", "")); 
    } catch (Exception e) { 
     Log.e("debug", e.toString()); 
     return 0; 
    } 
} 

我logcat的輸出: LogCatOutput as screenshot

enter image description here

回答

0

我的的inputType設置DecimalNumber設置,所以EditText上只允許一個點。訣竅是刪除輸入類型。

相關問題