Как я могу изменить значок в EditText?

Я делаю EditText для получения пароля от пользователя.

Поэтому я изменил тип ввода на пароль.

<EditText
                android:id = "@+id/edittext_Password"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:backgroundTint = "@color/colorPrimary"
                android:inputType = "textPassword"
                android:layout_weight = "1"
                />

Когда я вставляю слово в EditText, появляется черная точка. Я хочу изменить точку на ресурс с возможностью рисования.

Как я могу изменить значок в EditText?

Возможный дубликат: stackoverflow.com/questions/6125352/…

Manish Gupta 03.05.2018 09:44

Я не думаю, что вы можете установить drawable вместо char.

Khemraj Sharma 03.05.2018 09:49

Вы можете опубликовать требуемый интерфейс.

Khemraj Sharma 03.05.2018 09:49

@Khemraj Просто обведи вот так

Polaris Nation 03.05.2018 09:59

@ManishGupta Да, я вижу это, но он возвращает char. Мне нужен ресурс с возможностью рисования

Polaris Nation 03.05.2018 09:59

@PolarisNation вы хотите изменить цвет точки?

AskNilesh 03.05.2018 10:06

@PolarisNation проверьте это github.com/ChaosLeong/PinView

AskNilesh 03.05.2018 10:12
5
7
454
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете написать код для ваших требований, следуя этому коду.

Ответ исходит от этот учебник, и он описывает поведение, когда пользователь:

  • войдет в экран входа в систему, клавиатура откроется автоматически.

  • пытается ввести в него значение, тогда фон текстового поля меняется на текстовое поле со звездочкой.

  • пытается отменить / удалить введенное значение с помощью клавиши возврата на клавиатуре, тогда фон текстового поля изменится на текстовое поле без звездного фона.

Прежде всего вам нужно создать два drawables:

Затем, согласно этому подходу, вы должны реализовать метод addTextChangedListener на вашем EditText. После этого в качестве параметра вы создаете новый экземпляр класса TextWatcher и реализуете его методы:

etxtPin1.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) {
          if (etxtPin1.getText().toString().trim().length()==1){

          etxtPin1.clearFocus();
          etxtPin2.requestFocus();
          etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg_star);

          }
       }
    });

Затем вам нужно реализовать setOnKeyListener и его метод onKey:

this.etxtPin1.setOnKeyListener(new View.OnKeyListener() {
      public boolean onKey(View paramView, int paramInt, KeyEvent paramKeyEvent) {
           if ((paramKeyEvent.getAction() == KeyEvent.ACTION_DOWN)&&(paramInt == 67) && (LoginActivity.this.etxtPin2.getText().length() == 0)) {
               etxtPin1.requestFocus();
               etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg);
               etxtPin1.setText("");
           }

           return false;
       }
    });


Другой подход: создает собственный класс, расширяющий PasswordTransformationMethod.

public class MyPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
        private CharSequence mSource;
        public PasswordCharSequence(CharSequence source) {
            mSource = source; // Store char sequence
        }
        public char charAt(int index) {
            return '*'; // This is the important part
        }
        public int length() {
            return mSource.length(); // Return default
        }
        public CharSequence subSequence(int start, int end) {
            return mSource.subSequence(start, end); // Return default
        }
    }
};

Ссылка: В android как показать звездочку (*) вместо точек в EditText с типом ввода как textPassword?

Справка

Спасибо попробую. Но при другом подходе он возвращает char? недоступный ресурс.

Polaris Nation 03.05.2018 10:27

Если вы хотите изменить цвет точек в редактируемом тексте, вы можете изменить цвет текста, который также изменит цвет точек.

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

android:textColor = "#FF0000" or setTextColor(int)

Спасибо, но это тот ответ, который я хотел

Polaris Nation 04.05.2018 02:58

Другие вопросы по теме