Маска для EditText в Android - PullRequest
8 голосов
/ 02 мая 2011

Я хочу ограничить ввод в EditText всех символов, кроме цифр, "?"А также "*".Как я могу это сделать?

Ответы [ 7 ]

0 голосов
/ 13 мая 2019

Попробуйте это

Из этого кода вы можете ввести от 0 до 9 цифр и только два специальных символа? а также *.

<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:id="@+id/first_name"
   android:digits="?*1234567890"
   android:singleLine="true"
   />
0 голосов
/ 17 мая 2019
public class MainActivity extends Activity {

private EditText editText;
private String blockCharacterSet = "?*";

private InputFilter filter = new InputFilter() {

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

        if (source != null && !blockCharacterSet.contains(("" + source))) {
            return "";
        }
        return null;
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.editText);
    editText.setFilters(new InputFilter[] { filter });
}

}

0 голосов
/ 13 сентября 2018

вы можете проверить свой ввод с помощью метода edittext.addTextChangeListener.

etAdjustmentInput.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {             
             //checking the length of input 
            if (etAdjustmentInput.getText().toString().trim().length()<=0){
                 // if length less then or equals 0 show warning or make button not clickable
                tvAdjustmentInfoOk.setClickable(false);
                tvAdjustmentInfoOk.setTextColor(getResources().getColor(R.color.time_color));
            }
            else {

                 // input length greater then 0 now check the input type according to your requirement 
                tvAdjustmentInfoOk.setClickable(true);
                tvAdjustmentInfoOk.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
                if(s.equals("?")){
                 //do your task
                  }
                else{ // whatever you want to tell the user 
                  }
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

Внутри onTextChanged метода вы можете ограничить пользователя до maximum length, а также вы можете проверить input type в соответствии с вашими требованиями

0 голосов
/ 14 марта 2018

Таким образом, мы можем ограничить пользователя не печатать? и *

<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:textSize="@dimen/register_text_size"
   android:layout_weight="1"
   android:id="@+id/first_name"
   android:padding="14dp"
   android:digits="@#$%^&()_-+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12"
   android:singleLine="true"
   android:hint="@string/first_name"/>
0 голосов
/ 07 марта 2017

Если у вас также есть максимально строгая длина вашей строки, вы можете использовать маску.Я не уверен, что это правильное решение, но оно самое простое.Самый простой способ использовать маску в своих программах Android в Android Studio - это использовать библиотеку MaskedEditText ( ссылка на GitHub ).

Не могу понять, что означает: цифры "?"И "", так что я полагаю, просто "?"и "".Итак, код:

В вашем build.gradle:

compile 'ru.egslava:MaskedEditText:1.0.5'

А в вашем макете:

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:id="@+id/phone_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:typeface="monospace"
    mask:allowed_chars="?*"
    mask:mask="##########"
    app:keep_hint="true"
    />

Этот код создает EditText, который может содержать ТОЛЬКО "?»и "*" и максимальная длина 10. Не стесняйтесь задавать свои вопросы: -)

0 голосов
/ 05 июня 2016

Вы можете использовать этот метод:

EditText editText = new EditText(this);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

, а затем в методе beforeTextChanged предотвратить вставку "?" и "*" цифры.

0 голосов
/ 02 мая 2011

Вы можете добавить TextWatch через addTextChangedListener.afterTextChanged позволяет изменять текст после его изменения.

(Имейте в виду, что существует множество способов изменить текстовое поле - ввод текста, автоматическое заполнение через IME, копирование и вставка).Обрабатывайте их правильно в TextWatch.

...