密码提示字体与其他编辑文本字段不同

11
EditText password = (EditText) view.findViewById(R.id.etPassword);

    if (Build.VERSION.SDK_INT != android.os.Build.VERSION_CODES.KITKAT) {
        Typeface typeface = TypefaceUtil.overrideFont(getContext(), "SERIF", "fonts/calibri.ttf");
        password.setTypeface(typeface);
    }

以下是TextInputLayout的XML布局

<android.support.design.widget.TextInputLayout
    android:id="@+id/inpPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/button_margin_small">

    <android.support.design.widget.EditText
        android:id="@+id/etPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif"
        android:hint="@string/set_pass"
        android:inputType="textPassword"
        android:maxLength="@integer/pass_max"
        android:maxLines="1"
        android:password="true"
        android:singleLine="true" />
</android.support.design.widget.TextInputLayout>

我正在尝试使用这段代码,但是我的密码提示字体样式与我设置的不同。


你正在使用 android:inputType="textPassword",所以它显示不同的字体。移除这行 android:inputType="textPassword",再检查一遍。 - Gowthaman M
请解释它与什么不同,并提供相关代码。 - Vega
请看这个答案 - Ajil O.
可能是更改editText提示字体的重复问题。 - Ajil O.
6个回答

16

此外,在移除 iandroid:inputType=" textPassword" 并添加 app:passwordToggleEnabled="true" 后,它可以正常工作。

<android.support.design.widget.TextInputLayout
            android:id="@+id/inpPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/button_margin_small"
            app:passwordToggleEnabled="true">

            <EditText
                android:id="@+id/etPassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/set_pass"
                android:maxLength="@integer/pass_max"
                android:maxLines="1"
                android:singleLine="true" />
        </android.support.design.widget.TextInputLayout>



EditText password = (EditText) view.findViewById(R.id.etPassword);
    password.setTypeface(Typeface.DEFAULT);
    password.setTransformationMethod(new PasswordTransformationMethod());

11

试试这个

<Edittext
            android:id="@+id/edtPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Password"
            android:inputType="text"
            android:textSize="14sp" />
在您的edittext xml中设置android:inputType="text"。在Java文件中设置edtPassword.setTransformationMethod(new PasswordTransformationMethod());。对于我来说,在编辑文本的自定义字体中有效。

3

嘿,如果有人正在使用 Kotlin,希望这段代码能帮到你,它已经在我的项目中成功运行。我正在使用 com.google.android.material.textfield.TextInputLayoutandroidx.appcompat.widget.AppCompatEditText

Kotlin 代码:

// find the view
val etPassword = view.findViewById<AppCompatEditText>(R.id.etPassword)

// set the typeface to your choice
etPassword.typeface = Typeface.SANS_SERIF

// the set its transformationMethod to PasswordTransformationMethod
etPassword.transformationMethod = PasswordTransformationMethod()

这是我的XML文件:
<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/tilPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:passwordToggleEnabled="true">


    <androidx.appcompat.widget.AppCompatEditText
        android:id="@+id/etPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</com.google.android.material.textfield.TextInputLayout>

2
使用android:fontFamily="sans-serif"

2

我也遇到了这个问题。

你需要尝试这种方法,你会得到解决方案。

XML代码

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Password"
    android:id="@+id/password_text"/>

Java代码

    EditText password = (EditText) findViewById(R.id.password_text);
    password.setTypeface(Typeface.DEFAULT);
    password.setTransformationMethod(new PasswordTransformationMethod());

希望这可以帮助到您...


是的,这很好,但它并没有完全工作,只能在移除android:inputType:"textPassword"时起作用。 - Ruchita Sharma

0
我发现当输入类型为textPassword时,我的EditText的字体样式不同。通过使用fontFamily属性解决了这个问题。
以下是我在布局中使用的代码:
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fontFamily="sans-serif"
    android:hint="My Password hint"
    android:inputType="textPassword" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接