2017-05-04 53 views
0

我正在使用我的代碼中的編輯文本。我需要將權重值限制爲160.如何實現此目的。將edittext的值限制爲android中的某些值

這是我使用

android:id="@+id/txtWeight" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:inputType="number" 
         android:layout_weight="0" 
         android:background="@drawable/border" 
         android:padding="5dp" 
         android:maxLength="3" 
         android:textSize="15sp" 
         android:maxLines="1" 
         android:hint="" 

我已經採取maxLenght爲 「3」 的XML。所以用戶可以選擇輸入999。我需要限制到160

回答

1

試試這個:

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

然後在你的片段/活動:

EditText et = (EditText) findViewById(R.id.myEditText); 
et.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "180")}); 
+0

謝謝哥們它的工作 – Abhinay

+1

謝謝!plase將其標記爲正確的答案,如果它的工作! –

0

您可以將TextWatcher添加到您的EditText和更改它,因此它不會允許不需要的值

editText.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 
    } 
}); 
1

做這個

InputFilter if = new InputFilter[]{ new InputFilterMinMax("0", "180")} 

或定製

InputFilter filterTwoDecimal = new InputFilter() { 
     @Override 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 

      return null; 

     } 
    }; 
相關問題