Как увеличить размер точки пароля inputType в Android

У меня есть EditText, inputType которого numberPassword. Я хочу изменить размер точки, которая заменяет текст. Это довольно мало (по умолчанию для Android) для моей цели. Я хочу увеличить размер точки. Как я могу этого добиться?


person sagar suri    schedule 09.01.2018    source источник
comment
Это как заменить точку на звездочку. @АДМ   -  person sagar suri    schedule 09.01.2018
comment
Точно! это было просто для справки, чтобы получить какое-то представление. Я не сказал, что это ответ.   -  person ADM    schedule 09.01.2018


Ответы (3)


Попробуйте заменить звездочку на этот код ascii.
⚫ - ⚫ - Средний черный круг ⬤ - ⬤ - Черный большой круг

Что бы быть символом Unicode для большой пули в середине символа?

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

text.setTransformationMethod(new MyPasswordTransformationMethod());
person anddevmanu    schedule 09.01.2018

Предоставленное решение работает наполовину, проблема заключается в том, что это преобразование преобразует текст непосредственно в «*», в то время как ожидаемое поведение состоит в том, чтобы скрыть символ после ввода нового символа или через несколько секунд, чтобы пользователь получил возможность увидеть настоящий символ, прежде чем скрывать его. Если вы хотите сохранить поведение по умолчанию, вы должны сделать что-то вроде этого:

/**
 * A transformation to increase the size of the dots displayed in the text.
 */
private object BiggerDotPasswordTransformationMethod : PasswordTransformationMethod() {

    override fun getTransformation(source: CharSequence, view: View): CharSequence {
        return PasswordCharSequence(super.getTransformation(source, view))
    }

    private class PasswordCharSequence(
        val transformation: CharSequence
    ) : CharSequence by transformation {
        override fun get(index: Int): Char = if (transformation[index] == DOT) {
            BIGGER_DOT
        } else {
            transformation[index]
        }
    }

    private const val DOT = '\u2022'
    private const val BIGGER_DOT = '●'
}

Это заменит исходную точку любым символом, который вы хотите.

person dan87    schedule 03.12.2018

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

<com.google.android.material.textfield.TextInputLayout
            android:id="@+id/etPasswordLayout"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:passwordToggleEnabled="true">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:text="password"
                android:padding="0dp"
                android:textSize="40dp"
                android:background="@color/white"
                android:inputType="textPassword" />

        </com.google.android.material.textfield.TextInputLayout>
person J. MARS    schedule 15.12.2020