第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有辦法為Android中的EditText定義min和max值嗎?

有辦法為Android中的EditText定義min和max值嗎?

拉風(fēng)的咖菲貓 2019-07-19 16:45:07
有辦法為Android中的EditText定義min和max值嗎?我想為EditText.例如:如果任何人試圖在其中輸入一個月值,則該值必須介于1-12之間。我可以用TextWatcher但我想知道在布局文件或其他地方是否有其他方法可以做到這一點。編輯:我不想限制字符計數(shù)。我想限制價值。例如,如果我限制月份EditText當(dāng)我輸入12個字符時,它會接受它,但是如果我輸入了22個字符,它就不能在我進入的時候接受它。
查看完整描述

3 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊

如果min==3然后輸入以1或2開頭的任何數(shù)字是不可能的(例如:15,23)
如果min>=10那就不可能輸入任何東西,因為每個數(shù)字都必須從1,2,3開始.

據(jù)我理解,我們無法達(dá)到EditText類的簡單使用帶來的值。InputFilterMinMax,至少對于min值來說不是這樣,因為當(dāng)用戶輸入一個正數(shù)時,這個值就會增加,我們可以很容易地執(zhí)行一個實時測試,以檢查它是否達(dá)到了極限,或者超出了范圍,并阻止了不符合要求的條目。測試min值是另一回事,因為我們不能確定用戶是否已經(jīng)完成輸入,因此無法決定是否應(yīng)該阻止。

這并不是OP所要求的,但為了驗證目的,我在我的解決方案中將InputFilter若要測試最大值,請使用OnFocusChangeListener對象時重新測試最小值。EditText如果用戶完成了輸入,就會失去焦點,如下所示:

package test;import android.text.InputFilter;import android.text.Spanned;public class InputFilterMax implements InputFilter {private int max;public InputFilterMax(int max) {
    this.max = max;}public InputFilterMax(String max) {
    this.max = Integer.parseInt(max);}@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {   
    try {
        String replacement = source.subSequence(start, end).toString(); 

        String newVal = dest.toString().substring(0, dstart) + replacement +dest.toString().substring(dend, dest.toString().length());

        int input = Integer.parseInt(newVal);

        if (input<=max)
            return null;
    } catch (NumberFormatException nfe) { }   //Maybe notify user that the value is not good      return "";}}

OnFocusChangeListenerMin

package test;import android.text.TextUtils;import android.view.View;import android.view.View.OnFocusChangeListener;public class OnFocusChangeListenerMin implements OnFocusChangeListener {private int min;public OnFocusChangeListenerMin(int min) {
    this.min = min;}public OnFocusChangeListenerMin(String min) {
    this.min = Integer.parseInt(min);}@Overridepublic void onFocusChange(View v, boolean hasFocus) {
    if(!hasFocus) {
        String val = ((EditText)v).getText().toString();
        if(!TextUtils.isEmpty(val)){
            if(Integer.valueOf(val)<min){
                //Notify user that the value is not good
            }

        }
    }}}

然后在活動中設(shè)置InputFilterMaxOnFocusChangeListenerMinEditText注意:您可以在onFocusChangeListener.

mQteEditText.setOnFocusChangeListener( new OnFocusChangeListenerMin('20');mQteEditText.setFilters(new InputFilter[]{new InputFilterMax(getActivity(),'50')});



查看完整回答
反對 回復(fù) 2019-07-19
  • 3 回答
  • 0 關(guān)注
  • 691 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號