在Android中更改EditText的字体?

有没有办法改变Android中的EditText的字体? 我希望它匹配我为我所有的textView设置的字体。

Solutions Collecting From Web of "在Android中更改EditText的字体?"

editText.setTypeface(Typeface.SERIF); 

就像TextView一样。

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 ::你可以使用自定义字体inheritanceTextView类,并使用它来代替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); } } } 

资产文件夹中创build一个字体文件夹,并把你的.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); 
 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); } 

第一种方法

在你的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. 创build一个新的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"/> 

您可以在最新版本的Android studio 3的res目录下创build字体文件夹,然后复制并将其放到字体文件夹中。 现在只需将fontFamily添加到EditText标记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上应用字体。