AppCompatEditText无法正确显示项目符号

时间:2018-12-14 15:25:15

标签: android android-edittext android-appcompat androidx

我在应用中使用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 :(得分:0)

尝试使用 TextInputEditText
或只是EditText

答案 1 :(得分:0)

对charAt方法进行如下更改:

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

顺便说一句,尝试使用“密码”类型的EditText-它会自动将项目符号替换为密码符号。