fonts xperia 増やす - Androidのパスワードヒントフォント




8 Answers

Dialogs Guideからこの便利なヒントを見つけました

ヒント:デフォルトでは、「textPassword」入力タイプを使用するようにEditText要素を設定すると、フォントファミリはモノスペースに設定されるため、両方のテキストフィールドが一致するフォントを使用するようにフォントファミリを "sans-serif"スタイル。

例えば

android:fontFamily="sans-serif"
xz 追加 変更

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



setTransformationMethodのアプローチは私のためにアンドロイド:imeOptionを破り、キャリッジリターンをパスワードフィールドに入力できるようにします。 代わりに私はこれをやっている:

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

XMLではandroid:password = "true"を設定していません。




他の答えは、ほとんどの場合に適切な解決策です。

ただし、カスタムEditTextサブクラスを使用してデフォルトでカスタムフォントを適用する場合は、微妙な問題があります。 サブクラスのコンストラクタでカスタムフォントを設定した場合、 inputType="textPassword"を設定すると、システムによって上書きされます。

この場合、 super.onAttachedToWindow呼び出しの後で、スタイリングを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()));
        }
    }
}



書道ライブラリを使用してください。

パスワードフィールドを正しいフォントで更新することはまだありません。 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); 



この問題を解決する方法はたくさんありますが、それぞれの方法に長所と短所があります。 私のテストです

私は入力パスワードを有効にするとき、私はこのフォントの問題をいくつかのデバイス(私の答えの最後にリスト)に直面する

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-lightは、 setTypeface(Typeface.DEFAULT)後で、アプリケーションのすべてのViewデフォルトフォントですEditTextフォントは、まだ一部のデバイスで異なって見えます

3) android:fontFamily="sans-serif"使うandroid:fontFamily="sans-serif"

  • いくつかのデバイスについては、 クラッシュする、私の答えをここで確認するhttps://.com/a/52421199/5381331 。 また、フォントはまだ異なって見える

マイ・ソリューショ

書体をsetInputType前にキャッシュしてから再利用する

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

テスト
デバイスのフォントに関する問題

  • Xiaomi A2(8.0.1)
  • ピクセルXL(8.1.0)
  • Sony Xperia Z5 Au(SOV32)(6.0)
  • 矢印NX(F-04G)(6.0.1)
  • 京セラ(S2)(7.0)

一部のデバイスがフォントの問題に直面しない

  • サムスンS4(SC-04E)(5.0.1)
  • Samsung Galaxy Node 5(5.1.1)
  • Samsung S7 Edge(SM-G935F)(7.0)



また、

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

一緒に

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



書道ライブラリを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);



これは、*とデフォルトの書体に変換されていないヒントを持つ入力パスワードを作成する方法です。

XMLについて:

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

アクティビティ:

inputPassword.setTypeface(Typeface.DEFAULT);

感謝のためのマンゴとrjrjr:D。




Related