AppCompatEditText неправильно показывает символ маркера - PullRequest
0 голосов
/ 14 декабря 2018

Я использую androidx.appcompat.widget.AppCompatEditText просмотр в моем приложении для написания пароля.И я хочу заменить настоящие символы символами маркера.Для этого я использую следующий код.Вот представление

                    <androidx.appcompat.widget.AppCompatEditText
                        android:id="@+id/regPasswordEditText"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="top"
                        android:hint="@string/password"
                        android:imeOptions="actionNext"
                        android:inputType="textPassword"
                        android:lines="1"
                        android:maxLines="1"
                        android:scrollHorizontally="true"
                        android:textColor="@color/white"
                        android:textColorHint="@color/text_gray"
                        android:textSize="14sp"/>

И для замены символа на символ маркера я использую:

  regPasswordEditText.transformationMethod = AsteriskPasswordTransformationMethod()

и класс:

public class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {

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

private class PasswordCharSequence implements CharSequence {
    private CharSequence mSource;

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

Но когда я пишу текств поле edittext я вижу квадратные маркеры вместо круговой, как на картинке:

enter image description here

Как исправить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Внесите изменения в ваш метод charAt следующим образом:

public char charAt(int index) {
    return 0x00002022; // This is the important part
}

Кстати, попробуйте использовать EditText типа «Пароль» - он автоматически заменит символы вашего пароля на маркеры.

0 голосов
/ 14 декабря 2018

Попробуйте использовать TextInputEditText
или просто EditText

...