Android'de şifre ipucu yazı tipi


255

EditText şifre modundayken, ipucunun farklı bir yazı tipinde (kurye?) Gösterildiği anlaşılıyor. Bundan nasıl kaçınabilirim? İpucu EditText parola modunda olmadığında aynı yazı tipinde görünmesini istiyorum.

Geçerli xml'im:

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

1
Tüm cihazların bu şekilde davranmadığını unutmayın. "HTC One X @ 4.1.1" yapar (tek boşluklu). "Samsung GT-7510 @ 4.0.4" desteklemiyor. (aynı yazı tipi)
Loda

1
LeWa OS 4.2.2'de de aynı davranış. Çok tutarsız bir şekilde API ..
ruX

hala
lolipopta

cevabımı burada kontrol edebilirsiniz umarım çalışır.
Dmila Ram

Yanıtlar:


395

Xml'de yazı tipini değiştirmek benim için ipucu metninde de işe yaramadı. İki farklı çözüm buldum, ikincisi benim için daha iyi davranıyor:

1) android:inputType="textPassword"xml dosyanızdan kaldırın ve bunun yerine java olarak ayarlayın:

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

Bu yaklaşımla ipucu yazı tipi iyi görünür, ancak bu düzenleme alanına yazarken, bir parola noktasına dönüşmeden önce her karakteri düz metinde görmezsiniz. Ayrıca tam ekran giriş yaparken noktalar görünmez, şifre açık metin olarak görünür.

2) android:inputType="textPassword"xml'nizde bırakın . Java'da AYRICA yazı tipini ve parolayı da ayarlayın

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

Bu yaklaşım bana istediğim ipucu yazı tipini verdi ve bana şifre noktaları ile istediğim davranışı verdi.

Umarım yardımcı olur!


3
Harika, bu garip bir davranış, varsayılandan beklemiyorsun!
Sander,

15
password.setTransformationMethod(new PasswordTransformationMethod());gerekli? Benim için iyi çalışıyor gibi görünüyor.
loeschg

1
İkisini de kullanmam gerekmiyordu setTransformationMethod(). Bununla birlikte, bu yaklaşımın, istenmeyen davranışa neden olan bazı yan etkileri vardır, çünkü varsayılan textPassworddavranışa kıyasla standart dışı bir davranışla sonuçlanır . Daha eksiksiz bir çözüm için şu adresteki yardımcı sınıfına bakın: stackoverflow.com/a/17582092/231078
Joe

10
Daha da iyisi, bu sayfadaki bir cevapta şu büyük basit çözüme bakın: stackoverflow.com/a/18073897
Marcin Koziński

16
İlk çözümü kullanmanın kötü bir fikir olduğunu lütfen unutmayın - otomatik önerme etkinleştirilmiş kullanıcılar, kendilerine önerilen diğer uygulamalarda şifrelerini görmeye başlayacaktır, çünkü EditTextinputType="textPassword"
Elad Nava

193

Bu yararlı ipucunu Dialogs Guide'dan buldum

İpucu: Varsayılan olarak, "textPassword" giriş türünü kullanacak şekilde bir EditText öğesi ayarladığınızda, font ailesi tek aralıklı olarak ayarlanır, bu nedenle her iki metin alanının da eşleşen bir font kullanması için font ailesini "sans-serif" olarak değiştirmeniz gerekir tarzı.


Örneğin

android:fontFamily="sans-serif"

21
Bu kabul edilen cevap olmalı. Daha basit ve dokümanlardan.
Marcin Koziński

29
Sadece API seviyesi 16 ve üstü üzerinde çalışması dışında iyi
Ben Clayton

6
Yalnızca API düzeyi 16 ve üstünde çalışır, ancak xml özniteliklerinin eski cihazlarda kilitlenmelere neden olmadığını, yalnızca göz ardı edildiğini unutmayın.
Adam Johns

Şifreyi birkaç kez göster /
gizle'yi

32

Bu sorunu gidermek için yaptığım şey bu. Nedense bu daha iyi bir çözüm olabilir dönüşüm yöntemini ayarlamak zorunda değildi:

Benim xml:

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

Benim Activity:

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

XML'de textPassword ile denedim ve .java dosyasında yaptığınız gibi çalıştı ve gayet iyi çalıştı. Benim için bu dönüşüme ihtiyaç duyulmadı
Joe Plante

2
Hatırlatma: InputType'ı koda göre değiştirdikten SONRA setTypeface () öğesini çağırın. InputType xx_VARIATION_PASSWORD içeriyorsa setTransformationMethod gerekmez;
Loda

21

SetTransformationMethod yaklaşımı android: imeOption'u benim için kırıyor ve satır başlarının parola alanına yazılmasına izin veriyor. Bunun yerine bunu yapıyorum:

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

Ve XML'de android: password = "true" ayarlamıyorum.


yap, bu benim için 6.0.1'de de işe yaradı, seçilen cevap
işe

5

Verilen cevap manisha işe yarıyor, ancak parola alanını varsayılana göre standart olmayan bir durumda bırakıyor. Yani, varsayılan yazı tipi yüzü, noktalarla değiştirilmeden önce görünen nokta önizlemeleri ve önizleme karakterleri de dahil olmak üzere (hem "görünür parola" alanı olduğunda) parola alanına da uygulanır.

Bunu düzeltmek ve yapmak için 1) tam olarak varsayılan textPasswordgiriş türü gibi görünmek ve hareket etmek , aynı zamanda 2) ipucu metninin varsayılan (tek boşluklu olmayan) bir yazı tipinde görünmesine izin vermek için TextWatcher, alanda geçiş yapabilen bir fontface , boş olup olmamasına bağlı olarak Typeface.DEFAULTve arasında düzgün bir şekilde ileri geri hareket eder Typeface.MONOSPACE. Bunu gerçekleştirmek için kullanılabilecek bir yardımcı sınıf oluşturdum:

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

Daha sonra bundan yararlanmak için yapmanız gereken tek şey register(View)statik yöntemi çağırmaktır . Diğer her şey otomatiktir (görünüm gerektirmiyorsa geçici çözümü atlamak dahil!):

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

1
İyi iş. Bir küçük değişiklik: EditText(örn. Roboto Light ipucu metnini) üzerinde bir yazı tipi ayarlarsanız , daha sonra ayarlamak Typeface.DEFAULTbunu geçersiz kılar. Ben field.getTypeface()daha sonra "varsayılan" yazı tipine sıfırlamak gerektiğinde ön çağırır ve bu yazı biçimi kullanın.
Christopher Orr

Arama field.getTypeface(),% 100 güvenilir gibi görünmüyor (genellikle tek aralıklı yazı tipini geri alacaksınız), ancak bir Yazı Tipi oluşturma Typeface.create()ve ardından iyi işleyen bir ayar oluşturma.
Christopher Orr

5

Bu sorunu çözmenin birçok yolu vardır, ancak her yolun artıları ve eksileri vardır. İşte benim testim

Sadece yüz bazı cihazda tarafından giriş şifresini etkinleştirmek (cevabım sonundaki listeye) Bu yazı sorunu

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

Eğer kullanırsam android:inputType="textPassword", bu sorun olmadı

Denediğim bir şey

1) setTransformationMethodBunun yerine kullanıninputType

edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
  • Yazı tipi iyi çalışıyor
  • Klavye ekranı çok iyi değil (sadece metni görüntüler, metnin üstünde sayı göstermez)

2) Kullanım Typeface.DEFAULT

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
setTypeface(Typeface.DEFAULT);
  • Klavye ekranı iyi ,
  • Yazı tipi düzgün çalışmayabilir . Örneğin sans-serif-light, Viewuygulamamdaki herkes için varsayılan yazı tipi => sonra setTypeface(Typeface.DEFAULT), EditTextyazı tipi bazı cihazlarda hala farklı görünüyor

3) Kullanım android:fontFamily="sans-serif"

ÇÖZÜMÜM

yazı tipini önbelleğe al ve setInputTypesonra tekrar kullan

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


Bazı aygıt yüzü yazı tipi sorunu sınama

  • Xiaomi A2 (8.0.1)
  • Piksel XL (8.1.0)
  • Sony Xperia Z5 Au (SOV32) (6.0)
  • Ok NX (F-04G) (6.0.1)
  • Kyocera (S2) (7.0)

Bazı cihazlarda yazı tipi sorunu yok

  • Samsung S4 (SC-04E) (5.0.1)
  • Samsung Galaxy Düğüm 5 (5.1.1)
  • Samsung S7 Edge (SM-G935F) (7.0)

Cihaz nedir (ad ve işletim sistemi)?
CoolMind

1
@CoolMind öneriniz için teşekkür ederim, cihazım yazı tipi sorununu güncelliyorum ve cihazım mevcut cihazımda yazı tipi sorunuyla karşı karşıya değil
Phan Van Linh

Büyük bir test için teşekkürler! Onu stackoverflow.com/a/52178340/2914140 adresinden geldim . Samsung S4'te setTransformationMethodyöntem kullandım (bir sorunla karşılaşılmadığında).
CoolMind

Cevabımda belirttiğim gibi, setTransformationMethodişe yarayacak ama klavye iyi görünmeyecek. Bununla birlikte, eğer oke, sadece küçük bir sorun çünkü hala oke
Phan Van Linh

4

Diğer cevaplar çoğu durum için doğru çözümdür.

Ancak, EditTextvarsayılan olarak özel bir yazı tipi uygulamak için özel bir alt sınıf kullanıyorsanız, ince bir sorun vardır. Alt sınıfınızın yapıcısında özel yazı tipini ayarlarsanız, ayarladıysanız yine de sistem tarafından üzerine yazılacaktır inputType="textPassword".

Bu durumda, stilinizi aramanızdan onAttachedToWindowsonra konumuna getirin super.onAttachedToWindow.

Örnek uygulama:

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

Bunun daha eski olabileceğini biliyorum, ancak birlikte InputTypeve app:passwordToggleEnabled="true"birlikte kullandığımda bu konuyla ilgili bir şeye girdim .

Yani, bunu yazmak, buradaki birine yardımcı olabilir.

app:passwordToggleEnabledParola giriş alanı için seçenekle birlikte parola alanına özel bir yazı tipi kullanmak istiyorum . Ancak 27.1.1 (bunu yazarken) destek kütüphanesinde çöküyordu.

Kod aşağıdaki gibiydi,

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

Yukarıdaki kod inputTypeXML'de tanımlanmamış

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

Ve Java'da, girdi türünün setTransformationMethodözelliklerini edinmeme yardımcı olacak textPasswordve ayrıca özel yazı tipi stilim için mutluyum.

Ancak, aşağıda belirtilen kilitlenme, tüm API düzeylerinde 27.1.1 destek kitaplığı ile gerçekleşti.

java.lang.NullPointerException: Boş bir nesne başvurusunda 'void android.support.design.widget.CheckableImageButton.setChecked (boolean)' sanal yöntemini çağırmayı deneyin

Bu onRestoreInstanceStateTextInputLayoutsınıf nedeniyle çöküyordu .

Adımları Yeniden Oluşturma: Parola görünürlüğünü değiştirin ve uygulamayı en aza indirin ve son uygulamalardan açın. Uh, ho Çöktü!

Tek ihtiyacım olan parola giriş alanında varsayılan parola değiştirme seçeneği (destek kitaplığını kullanarak) ve özel yazı tipi.

Bir süre sonra, aşağıdaki gibi yaparak anladım,

<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'de eklendi 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

Yukarıdaki java kodunda,

Özel yazı tipini kullanıcı adından aldım EditTextve TextInputLayoutşifre alanına uyguladım . Şimdi EditText, TextInputLayoutözelliği alacağı için yazı tipini parolaya açıkça ayarlamanıza gerek yoktur .

Ayrıca, kaldırdım password.setTransformationMethod(new PasswordTransformationMethod());

Bu şekilde passwordToggleEnabledçalışıyor, özel yazı tipi de çöküyor ve güle güle. Umarım bu konu gelecek destek sürümlerinde giderilecektir.


2

Özel bir Widget da kullanabilirsiniz. Çok basit ve Etkinlik / Parça kodunuzu karıştırmıyor.

İşte kod:

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

Ve XML'iniz şöyle görünecek:

<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" />

Deneyimlerime göre bu işe yaramıyor - dahili TextViewolarak yapıcı çağrısından sonra özel yazı tipinin üzerine yazılıyor gibi görünüyor. Başka bir cevapta geçici bir çözüm sağlandı.
Cory Petosky

2

kullanmak hat kütüphanesi .

o zaman hala doğru yazı tipiyle şifre alanlarını güncellemeyecektir. bu yüzden kod xml değil:

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

Geçenlerde, bazı kullanıcılara yardımcı olabilecek şifreler için EditText'in bir uzantısına geçiş monospace açma / kapatma özelliğini ekledim . Kullanmaz bu android:fontFamilyyüzden uyumlu <16.


0

Ayrıca

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

birlikte

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

0

İpucu görünürlüğüne bağlı olarak Yazı Tipi arasında geçiş yapmak için bu çözümü kullanın. Joe'nun cevabına benzer, ancak EditText'i genişletir:

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

Eğer kullandığınız hat kütüphane , aşağıdaki kod iyi çalışıyor bir TextInputLayout ve EditText ile birlikte.

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

Bu ipucu yazı
Rafael Ruiz Muñoz

0

Belki garip bir durum, ama bunu denedim ve öğrendim:

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

yazı tipinin kendisi yerine ipucunun yazı tipinin boyutunu değiştirdi ! Bu hala istenmeyen bir etkidir. Garip bir şekilde, ters işlem:

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

Aynı yazı tipi boyutunu korur.


0

Bu soruna kesin bir çözüm buldum

Merhaba için en iyi yol, bu soruna kesin bir çözüm buldum

En iyi yol, özel bir editText oluşturmak ve yazı tipi değerini geçici olarak kaydetmek ve ardından yöntemi InputType değişikliklerine uygulamaktır. şöyle:

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

Bu, * ve varsayılan yazı tipine dönüştürülmemiş ipucu olan giriş şifresi nasıl yapılır !!.

XML'de:

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

Faaliyette:

inputPassword.setTypeface(Typeface.DEFAULT);

teşekkürler: içgörü için mango ve rjrjr: D.


-2

Yukarıdaki gibi ama alanların xml'de kalın stile sahip olmadığından emin olun, çünkü yukarıdaki düzeltme ile bile asla aynı görünmeyecekler!


2
"Yukarıda" demeyin ... işler zamanla değişir :-)
ZaBlanc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.