Android의 비밀번호 힌트 글꼴


255

EditText가 암호 모드 인 경우 힌트가 다른 글꼴 (커 런서?)로 표시되는 것 같습니다. 어떻게 피할 수 있습니까? EditText가 암호 모드가 아닌 경우와 동일한 글꼴로 힌트를 표시하고 싶습니다.

내 현재 XML :

<EditText 
android:hint="@string/edt_password_hint"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:password="true"
android:singleLine="true" />

1
모든 장치가이 방식으로 작동하는 것은 아닙니다. "HTC One X @ 4.1.1"은 (모노 스페이스)를 수행합니다. "삼성 GT-7510 @ 4.0.4"는 그렇지 않습니다. (같은 글꼴)
Loda

1
LeWa OS 4.2.2와 동일한 동작입니다. 일관되지 않은 API ..
ruX

롤리팝에도 여전히 존재
Mightian

여기에서 내 대답을 확인할 수 있습니다 .
Dmila Ram

답변:


394

xml에서 서체를 변경해도 힌트 텍스트에서 작동하지 않았습니다. 두 가지 솔루션을 찾았으며 두 번째 솔루션은 더 나은 행동을 취합니다.

1) android:inputType="textPassword"xml 파일에서 제거 하고 대신 java로 설정하십시오.

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

이 방법을 사용하면 힌트 글꼴이 좋아 보이지만 해당 편집 필드에 입력 할 때 각 문자가 일반 문자로 표시되지 않고 암호 점으로 바뀝니다. 또한 전체 화면으로 입력 할 때 점이 나타나지 않지만 암호는 일반 텍스트로 나타납니다.

2) android:inputType="textPassword"XML을 그대로 두십시오 . Java에서는 또한 서체와 passwordMethod를 설정합니다.

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

이 접근 방식은 내가 원하는 힌트 글꼴을 제공했으며 암호 점으로 원하는 동작을 제공합니다.

희망이 도움이됩니다!


3
좋아, 이것은 이상한 행동이다. 당신은 디폴트에서 기대하지 않을 것이다!
샌더 Versluys

15
인가 password.setTransformationMethod(new PasswordTransformationMethod());필요? 없이 나를 위해 잘 작동하는 것 같습니다.
loeschg

1
나도 사용할 필요가 없었습니다 setTransformationMethod(). 그러나이 접근 방식의 일부 부작용으로 인해 기본 동작과 비교하여 비표준 동작이 발생하기 때문에 바람직하지 않습니다 textPassword. 보다 완벽한 솔루션은 다음의 도우미 클래스를 참조하십시오. stackoverflow.com/a/17582092/231078
Joe

10
더 나은 아직,이 페이지에 대한 답변 에서이 훌륭한 간단한 솔루션을보십시오 : stackoverflow.com/a/18073897
Marcin Koziński

16
최초의 솔루션을 사용하는 것은 나쁜 생각이 있음을 유의하시기 바랍니다 -이 사용자 자동 제언 글고 치기가 선언되지 않았기 때문에, 그들에게 제안 다른 응용 프로그램에서 암호를보고 시작합니다 활성화inputType="textPassword"
Elad 나바

193

대화 상자 가이드 에서 유용한 팁을 찾았습니다.

팁 : 기본적으로 "textPassword"입력 유형을 사용하도록 EditText 요소를 설정하면 글꼴 패밀리가 고정 폭으로 설정되므로 두 텍스트 필드에서 일치하는 글꼴을 사용하도록 글꼴 패밀리를 "sans-serif"로 변경해야합니다. 스타일.


예를 들어

android:fontFamily="sans-serif"

21
이것은 정답입니다. 더 간단하고 문서에서 가져온 것입니다.
Marcin Koziński

29
API 레벨 16 이상에서만 작동한다는 점을 제외하면 좋습니다.
Ben Clayton

6
API 레벨 16 이상에서만 작동하지만 xml 속성은 이전 장치에서 충돌을 일으키지 않지만 무시됩니다.
Adam Johns

비밀번호 표시 / 숨기기를 여러 번 클릭하면 작동하지 않습니다
Ali Habbash

32

이것이 내가이 문제를 해결하기 위해 한 것입니다. 어떤 이유로 나는 변환 방법을 설정할 필요가 없으므로 더 나은 해결책이 될 수 있습니다.

내 XML에서 :

<EditText
    android:id="@+id/password_edit_field"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="Password"
    android:inputType="textPassword" />

Activity:

EditText password = (EditText) findViewById( R.id.password_edit_field );
password.setTypeface( Typeface.DEFAULT );

방금 XML로 textPassword로 시도했지만 .java 파일에서와 마찬가지로 제대로 작동했습니다. 저에게는 변화가 필요하지 않은 것 같습니다
Joe Plante

2
알림 : 코드로 입력 유형을 변경 한 후 setTypeface ()를 호출하십시오. InputType에 xx_VARIATION_PASSWORD가 포함 된 경우 setTransformationMethod가 필요하지 않습니다.
Loda

21

setTransformationMethod 접근 방식은 나를 위해 android : imeOption을 중단하고 캐리지 리턴을 비밀번호 필드에 입력하도록 허용합니다. 대신 나는 이것을하고있다 :

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
setTypeface(Typeface.DEFAULT);

그리고 XML에서 android : password = "true"를 설정하지 않습니다.


야프, 이것은 6.0.1에서도 나에게 효과적이었다. 선택된 답변은 그렇지 않았다.
Nactus

5

제공된 답변 manisha는 작동하지만 암호 필드를 기본값과 비교하여 비표준 상태로 둡니다. 즉, 기본 글꼴은 도트 대체 및 도트로 교체되기 전에 표시되는 미리보기 문자 ( "보이는 비밀번호"필드 인 경우)를 포함하여 비밀번호 필드에도 적용됩니다.

이 문제를 해결하고 1) 기본 textPassword입력 유형 과 똑같이 보이고 작동 하지만 2) 힌트 텍스트가 기본 (단일 공백이 아닌) 글꼴로 표시 TextWatcher되도록하려면 필드에 전환 할 수있는 필드가 있어야합니다. 제대로 앞뒤로 사이 fontface Typeface.DEFAULTTypeface.MONOSPACE기반 비어 여부에. 나는 그것을 달성하는 데 사용할 수있는 도우미 클래스를 만들었습니다.

import android.graphics.Typeface;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;

/**
 * This class watches the text input in a password field in order to toggle the field's font so that the hint text
 * appears in a normal font and the password appears as monospace.
 *
 * <p />
 * Works around an issue with the Hint typeface.
 *
 * @author jhansche
 * @see <a
 * href="http://stackoverflow.com/questions/3406534/password-hint-font-in-android">http://stackoverflow.com/questions/3406534/password-hint-font-in-android</a>
 */
public class PasswordFontfaceWatcher implements TextWatcher {
    private static final int TEXT_VARIATION_PASSWORD =
            (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);
    private TextView mView;

    /**
     * Register a new watcher for this {@code TextView} to alter the fontface based on the field's contents.
     *
     * <p />
     * This is only necessary for a textPassword field that has a non-empty hint text. A view not meeting these
     * conditions will incur no side effects.
     *
     * @param view
     */
    public static void register(TextView view) {
        final CharSequence hint = view.getHint();
        final int inputType = view.getInputType();
        final boolean isPassword = ((inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION))
                == TEXT_VARIATION_PASSWORD);

        if (isPassword && hint != null && !"".equals(hint)) {
            PasswordFontfaceWatcher obj = new PasswordFontfaceWatcher(view);
            view.addTextChangedListener(obj);

            if (view.length() > 0) {
                obj.setMonospaceFont();
            } else {
                obj.setDefaultFont();
            }
        }
    }

    public PasswordFontfaceWatcher(TextView view) {
        mView = view;
    }

    public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
        // Not needed
    }

    public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {
        if (s.length() == 0 && after > 0) {
            // Input field went from empty to non-empty
            setMonospaceFont();
        }
    }

    public void afterTextChanged(final Editable s) {
        if (s.length() == 0) {
            // Input field went from non-empty to empty
            setDefaultFont();
        }
    }

    public void setDefaultFont() {
        mView.setTypeface(Typeface.DEFAULT);
    }

    public void setMonospaceFont() {
        mView.setTypeface(Typeface.MONOSPACE);
    }
}

그런 다음이를 사용하려면 register(View)정적 메소드를 호출하기 만하면됩니다. 다른 모든 것은 자동입니다 (보기가 필요하지 않으면 해결 방법을 건너 뛰는 것을 포함하여)!

    final EditText txtPassword = (EditText) view.findViewById(R.id.txt_password);
    PasswordFontfaceWatcher.register(txtPassword);

1
잘 하셨어요. 작은 변화 하나 : EditText(예 : 힌트 텍스트 Roboto Light 만들기)에서 글꼴 을 설정하면 Typeface.DEFAULT나중에 설정하면이 글꼴 이 무시됩니다. field.getTypeface()나중에 "기본"글꼴로 재설정해야 할 때마다 앞면을 불러서 해당 서체를 사용합니다.
Christopher Orr

글쎄, 전화 field.getTypeface()는 100 % 신뢰할 수있는 것처럼 보이지 않지만 (단일 공백 ​​글꼴을 다시 가져 오는 경우가 많지만) 서체를 Typeface.create()만든 다음 설정이 잘 작동하는 것 같습니다.
Christopher Orr

5

이 문제를 해결하는 방법은 여러 가지가 있지만 각 방법마다 장단점이 있습니다. 여기 내 테스트가 있습니다

입력 암호를 ​​활성화 할 때 일부 장치 (응답 끝에있는 목록) 에서만 이 글꼴 문제에 직면 합니다.

edtPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

을 사용 android:inputType="textPassword"하면이 문제 발생 하지 않습니다

내가 시도한 것

1) setTransformationMethod대신 사용inputType

edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
  • 글꼴이 잘 작동합니다
  • 키보드가 표시 되지 않음 (텍스트 만 표시하고 텍스트 위에 숫자를 표시하지 않음)

2) 사용 Typeface.DEFAULT

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
setTypeface(Typeface.DEFAULT);
  • 키보드 디스플레이 ,
  • 글꼴 이 제대로 작동하지 않을 수 있습니다 . 예 sans-serif-lightView내 응용 프로그램의 모든 기본 글꼴입니다 => after setTypeface(Typeface.DEFAULT), EditText글꼴 은 일부 장치에서 여전히 다르게 보입니다.

3) 사용 android:fontFamily="sans-serif"

내 솔루션

서체를 캐시 한 setInputType다음 재사용하십시오

Typeface cache = edtPassword.getTypeface();
edtPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
edtPassword.setTypeface(cache);


일부 장치 얼굴 글꼴 문제 테스트

  • 샤오 미 A2 (8.0.1)
  • 픽셀 XL (8.1.0)
  • 소니 Xperia Z5 Au (SOV32) (6.0)
  • Arrow NX (F-04G) (6.0.1)
  • 교세라 (S2) (7.0)

글꼴 문제가 아닌 일부 장치

  • 삼성 S4 (SC-04E) (5.0.1)
  • 삼성 Galaxy Node 5 (5.1.1)
  • 삼성 S7 에지 (SM-G935F) (7.0)

장치 (이름 및 OS)는 무엇입니까?
CoolMind

1
@CoolMind 나는 나의 현재 장치에 글꼴 문제 기지에 직면 업데이트 장치 얼굴 글꼴 문제 및 장치를 가지고, 귀하의 제안에 감사드립니다
판 반 린을

큰 시험 감사합니다! 나는 그녀를 stackoverflow.com/a/52178340/2914140 에서 왔습니다 . Samsung S4에서는 setTransformationMethod방법에 문제가 없었습니다.
CoolMind

내 대답에서 언급했듯이 setTransformationMethod작동하지만 키보드가 제대로 표시되지 않습니다. 그러나 당신이 그것으로 깨어도, 그것은 단지 작은 문제이기 때문에 여전히 깨어납니다
판 반 린

4

다른 답변은 대부분의 경우 올바른 솔루션입니다.

그러나 사용자 정의 EditText하위 클래스를 사용하여 기본적으로 사용자 정의 글꼴을 적용하는 경우 미묘한 문제가 있습니다. 서브 클래스의 생성자에서 사용자 정의 글꼴을 설정 한 경우을 설정하면 시스템에서 여전히 해당 글꼴을 덮어 씁니다 inputType="textPassword".

이 경우 스타일링을 통화 onAttachedToWindow후로 이동하십시오 super.onAttachedToWindow.

구현 예 :

package net.petosky.android.ui;

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.EditText;

/**
 * An EditText that applies a custom font.
 *
 * @author cory@petosky.net
 */
public class EditTextWithCustomFont extends EditText {

    private static Typeface customTypeface;

    public EditTextWithCustomFont(Context context) {
        super(context);
    }

    public EditTextWithCustomFont(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EditTextWithCustomFont(
            Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * Load and store the custom typeface for this app.
     *
     * You should have a font file in: project-root/assets/fonts/
     */
    private static Typeface getTypeface(Context context) {
        if (customTypeface == null) {
            customTypeface = Typeface.createFromAsset(
                    context.getAssets(), "fonts/my_font.ttf");
        }
        return customTypeface;
    }

    /**
     * Set a custom font for our EditText.
     *
     * We do this in onAttachedToWindow instead of the constructor to support
     * password input types. Internally in TextView, setting the password
     * input type overwrites the specified typeface with the system default
     * monospace.
     */
    @Override protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        // Our fonts aren't present in developer tools, like live UI
        // preview in AndroidStudio.
        if (!isInEditMode()) {
            setTypeface(getTypeface(getContext()));
        }
    }
}

3

나는이 나이가 하나가 될 수 있습니다 알고 있지만, 나는 내가 사용하는 경우이 문제와 관련된 무언가로 숙일 한 InputTypeapp:passwordToggleEnabled="true" 함께.

여기에 누군가 도움이 될 수 있으므로 이것을 작성하십시오.

비밀번호 입력란에 맞춤 글꼴을 사용하고 싶습니다. app:passwordToggleEnabled비밀번호 입력 필드 옵션 . 그러나 27.1.1 (이 글을 쓰는 동안) 지원 라이브러리에서 충돌이 발생했습니다.

코드는 아래와 같습니다.

<android.support.design.widget.TextInputLayout
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/_10dp"
        android:layout_marginTop="@dimen/_32dp"
        android:hint="@string/current_password"
        android:textColorHint="@color/hint_text_color"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/black">


        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="start|left"
            android:maxLines="1"
            android:textAlignment="viewStart"
            android:textColor="@color/black"
            android:textColorHint="@color/camel"
            android:textSize="@dimen/txt_16sp"
            app:font_style="regular"
            app:drawableEnd="@drawable/ic_remove_eye" />

    </android.support.design.widget.TextInputLayout>

위의 코드는 inputTypeXML로 정의 되지 않았습니다

EditText password = (EditText) findViewById(R.id.password);
password.setTransformationMethod(new PasswordTransformationMethod());

그리고 Java에서는 setTransformationMethod속성을 얻는 데 도움이됩니다.textPassword 입력 유형 사용자 정의 글꼴 스타일이 만족 스럽습니다.

그러나 아래 언급 된 충돌은 27.1.1 지원 라이브러리가있는 모든 API 수준에서 발생했습니다.

java.lang.NullPointerException : null 객체 참조에서 가상 메소드 'void android.support.design.widget.CheckableImageButton.setChecked (boolean)'을 호출하려고 시도했습니다.

onRestoreInstanceState내부 TextInputLayout클래스 로 인해 충돌이 발생했습니다 .

재현 단계 : 비밀번호 표시를 토글하고 앱을 최소화하고 최근 앱에서 엽니 다. 어, 호는 추락했다!

비밀번호 입력 필드에 기본 비밀번호 전환 옵션 (지원 라이브러리 사용)과 사용자 지정 글꼴 만 있으면됩니다.

얼마 후, 다음과 같이하여 알아 냈습니다.

<android.support.design.widget.TextInputLayout
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/_10dp"
        android:layout_marginTop="@dimen/_32dp"
        android:hint="@string/current_password"
        android:textColorHint="@color/hint_text_color"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/black">


        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="start|left"
            android:maxLines="1"
            android:textAlignment="viewStart"
            android:textColor="@color/black"
            android:textColorHint="@color/camel"
            android:textSize="@dimen/txt_16sp"
            app:font_style="regular"
            app:drawableEnd="@drawable/ic_remove_eye"
            android:inputType="textPassword" />

    </android.support.design.widget.TextInputLayout>

XML에서 추가 android:inputType="textPassword"

TextInputLayout inputPassword = findViewById(R.id.input_password);
EditText password = findViewById(R.id.password);
EditText userName = findViewById(R.id.user_name);
// Get the typeface of user name or other edit text
Typeface typeface = userName.getTypeface();
if (typeface != null)
   inputLayout.setTypeface(typeface); // set to password text input layout

위의 자바 코드에서

사용자 이름에서 사용자 정의 서체를 가져 EditText와서 TextInputLayout비밀번호 필드에 적용했습니다 . 이제 글자체를 암호 EditText로 명시 적으로 설정할 필요가 없습니다 .TextInputLayout 속성 .

또한 제거했습니다 password.setTransformationMethod(new PasswordTransformationMethod());

이 방법 passwordToggleEnabled으로 작동하면 사용자 정의 글꼴도 충돌에 적용됩니다. 이 문제가 향후 지원 릴리스에서 해결되기를 바랍니다.


2

사용자 정의 위젯을 사용할 수도 있습니다. 매우 간단하고 활동 / 조각 코드를 어지럽히 지 않습니다.

코드는 다음과 같습니다.

public class PasswordEditText extends EditText {

  public PasswordEditText(Context context) {
    super(context);
    init();
  }

  public PasswordEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();

  }

  public PasswordEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
  }

  private void init() {
    setTypeface(Typeface.DEFAULT);
  }
}

XML은 다음과 같습니다.

<com.sample.PasswordEditText
  android:id="@+id/password_edit_field"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:hint="Password"
  android:inputType="textPassword"
  android:password="true" />

내 경험상 이것은 작동하지 않습니다-내부적으로 TextView생성자 호출 후 사용자 정의 서체를 덮어 쓰는 것 같습니다. 다른 답변에서 해결 방법을 제공했습니다.
Cory Petosky

2

사용 서예 라이브러리를 .

그런 다음 여전히 올바른 글꼴로 비밀번호 필드를 업데이트하지 않습니다. xml이 아닌 코드 에서이 작업을 수행하십시오.

Typeface typeface_temp = editText.getTypeface();
editText.setInputType(inputType); /*whatever inputType you want like "TYPE_TEXT_FLAG_NO_SUGGESTIONS"*/
//font is now messed up ..set it back with the below call
editText.setTypeface(typeface_temp); 

0

최근 에 암호를 위해 EditText확장으로 토글 모노 스페이스를 켜거나 끄는 기능을 추가하여 일부 사람들에게 도움이 될 수 있습니다. 사용하지 않으므로 android:fontFamily<16과 호환됩니다.


0

당신은 또한 사용할 수 있습니다

<android.support.design.widget.TextInputLayout/>

함께

<android.support.v7.widget.AppCompatEditText/>

0

힌트 가시성에 따라이 솔루션을 사용하여 서체를 토글합니다. Joe의 답변과 비슷하지만 EditText를 대신 확장합니다.

public class PasswordEditText extends android.support.v7.widget.AppCompatEditText {

    public PasswordEditText(Context context) {
        super(context);
    }

    public PasswordEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PasswordEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
        super.onTextChanged(text, start, lengthBefore, lengthAfter);
        if (text.length() > 0) setTypeface(Typeface.MONOSPACE);
        else setTypeface(Typeface.DEFAULT);
    }

}

0

TextInputLayout 및 EditText와 함께 서예 라이브러리 를 사용하는 경우 다음 코드가 효과적입니다.

    EditText password = (EditText) findViewById(R.id.password);
    TextInputLayout passwordLayout = (TextInputLayout) findViewById(R.id.passwordLayout);

    Typeface typeface_temp = password.getTypeface();
    password.setInputType(InputType.TYPE_CLASS_TEXT |
            InputType.TYPE_TEXT_VARIATION_PASSWORD); 

    password.setTypeface(typeface_temp);
    passwordLayout.setTypeface(typeface_temp);

이것은 내 힌트 서체를 수정하지 않았습니다
Rafael Ruiz Muñoz

0

아마도 이상한 경우이지만, 나는 이것을 실험하고 그것을 발견했습니다.

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
password.setTransformationMethod(new PasswordTransformationMethod());

글꼴 자체 대신 힌트 글꼴크기를 변경했습니다 ! 이것은 여전히 ​​바람직하지 않은 효과입니다. 이상하게도 역 동작 :

password.setTransformationMethod(new PasswordTransformationMethod());
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

같은 글꼴 크기를 유지합니다.


0

이 문제에 대한 확실한 해결책을 찾았습니다.

안녕하세요, 가장 좋은 방법은이 문제에 대한 확실한 해결책을 찾았습니다.

가장 좋은 방법은 사용자 정의 editText를 작성하고 서체의 값을 임시로 저장 한 다음 메소드를 InputType 변경 사항에 적용하는 것입니다. 마지막으로, 임시 유형면의 값을 editText로 다시 설정합니다. 이렇게 :

public class AppCompatPasswordEditText extends AppCompatEditText {


    public AppCompatPasswordEditText(Context context) {
        super(context);
    }

    public AppCompatPasswordEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public AppCompatPasswordEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        // Our fonts aren't present in developer tools, like live UI
        // preview in AndroidStudio.
        Typeface cache = getTypeface();

        if (!isInEditMode() && cache != null) {
            setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            setTypeface(cache);
        }
    }

}

-1

이것은 * 및 기본 서체 !!로 변환되지 않은 힌트가있는 입력 암호를 ​​만드는 방법입니다.

XML에서 :

android:inputType="textPassword"
android:gravity="center"
android:ellipsize="start"
android:hint="Input Password !."

활동 중 :

inputPassword.setTypeface(Typeface.DEFAULT);

덕분에 : 망고와 rjrjr에 대한 통찰력 : D.


-2

위와 같이 xml에서 필드가 굵은 스타일로 표시되지 않도록하십시오. 위의 수정으로도 똑같이 보이지 않습니다!


2
"위에"말하지 마세요 ... 시간
이지나면서
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.