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