web-dev-qa-db-ja.com

AndroidのEditTextのフォントを変更しますか?

AndroidのEditTextのフォントを変更する方法はありますか?すべてのtextViewに設定したフォントと一致させたい。

27
William L.
 editText.setTypeface(Typeface.SERIF); 

TextViewのように。

 <TextView
  ...
     Android:typeface="serif"
  ... />

編集:上記はXMLです

38

Solution1 ::これらのメソッドを呼び出すには、親ビューを引数として渡します。

private void overrideFonts(final Context context, final View v) {
    try {
        if (v instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) {
                View child = vg.getChildAt(i);
                overrideFonts(context, child);
         }
        } else if (v instanceof EditText) {
            ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "font.ttf"));
        }
    } catch (Exception e) {
 }
}

Solution2 :: TextViewクラスをカスタムフォントでサブクラス化し、textviewの代わりに使用できます。

public class MyEditView extends EditText{

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

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

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

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font.ttf");
            setTypeface(tf);
        }
    }

 }
26
Shankar Agarwal

fontsフォルダーをassetsフォルダーに作成し、.ttfフォントファイルを配置してから、onCreate()関数に書き込みます。

EditText editText =(EditText)findViewById(R.id.insert_yors_edit_text_layout);
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/yours_font.ttf"); 
editText.setTypeface(type);
8
Sara

font前回のバージョンのresディレクトリの下にフォルダーを作成することができますAndroid studio 3。それからコピーして、フォントをfontフォルダーに貼り付けます。fontFamilyEditText tag xmlに追加します。

以下のように。

        <EditText
            Android:id="@+id/subject"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_below="@id/headerShare"
            Android:layout_marginBottom="5dp"
            Android:layout_marginEnd="16dp"
            Android:layout_marginStart="16dp"
            Android:layout_marginTop="16dp"
            Android:background="@drawable/edittext_bg"
            Android:fontFamily="@font/ritaric"
            Android:gravity="start"
            Android:hint="Subject"
            Android:inputType="text"
            Android:maxHeight="50dp"
            Android:padding="16dp"
            Android:textColor="@color/black"
            Android:textColorHint="@color/black"
            Android:textSize="@dimen/colors_textview_size" />

を使用しております Android:fontFamily="@font/ritaric" EditTextにフォントを適用します。

3
sirvan alie
void setFont(Context context, ViewGroup vg)
        {
          final String FONT_NAME = "lato_bold.ttf";
            for (int i = 0; i < vg.getChildCount(); i++)
                {
                    View v = vg.getChildAt(i);
                    if (v instanceof ViewGroup)
                        setFont(context, (ViewGroup) v);
                    else if (v instanceof TextView)
                        {
                            ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
                        }
                    else if (v instanceof EditText)
                        {
                            ((EditText) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
                        }
                    else if (v instanceof Button)
                        {
                            ((Button) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
                        }
                    else if (v instanceof CheckBox)
                        {
                            ((CheckBox) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
                        }
                    else if (v instanceof RadioButton)
                        {
                            ((RadioButton) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
                        }
                }
        }

ActivityまたはFragmentで、メインレイアウトを取得します

Inflater inflater = (Inflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//For Activity
//Inflater inflater = (Inflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.main_fragment, container, false);
//For Activity
//View v = inflater.inflate(R.layout.signup_fragment, null, false);
if (v instanceof ViewGroup)
    {
      setFont(getActivity(), (ViewGroup) v);
      //For Activity
     //setFont(this, (ViewGroup) v);
    }
1
Ishtiaq

最初の方法

Javaクラスでこのコードを使用してください

    EditText et_brand=(EditText)findViewById(R.id.et_brand);
    et_brand.setTypeface(Typeface.createFromAsset(getAssets(),"Aspergit Bold.ttf")); 
    //Aspergit Bold.ttf is Font style name of text

第二の方法

  1. 新しいJavaクラスを作成し、必要に応じて

    public class CustomTextView extends TextView {
    
    public CustomTextView(Context context, AttributeSet attrs, int defStyle) 
    {
    super(context, attrs, defStyle);
    init();
    }
    
    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    init();
    }
    
    public CustomTextView(Context context) {
    super(context);
    init();
    }
    
    private void init() {
       Typeface tf = Typeface.createFromAsset(getContext().getAssets(), 
    "Aspergit Bold.ttf");
    setTypeface(tf);
    }
    }
    
  2. Xmlファイルで使用します

                  <YourPackageNAme.CustomEditText
                   Android:layout_width="wrap_content"
                   Android:layout_height="wrap_content"
                   Android:background="@null"/>
    
0
Sunil

このコードをJavaファイルに追加します。通常、イタリック、太字、太字など、どのタイプを追加できますか。

edittext.set Typeface(null、Typeface.ITALIC);

0
bAdmAn