Come impostare i font personalizzati su EditText Android

Sto cercando di implementare il tipo di carattere personalizzato impostato su Modifica text qualsiasi che abbia migliore approccio piuttosto che questo ..

Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf"); edittext.setTypeface(myFont); 

Perché ho un sacco di text di modifica ….

  • Android Dev - URL di richiamata non funzionante ... (0_o)
  • errore libcurl CURLE_SSL_CACERT_BADFILE su android
  • Sottrazione di Background di Android OpenCV
  • Dialogo di selezione numero di Android
  • Come possiamo specificare la width per each scheda in tabhost?
  • Android - Eclipse: Keystore era manomesso o la password non era corretta
  • Causa: retrofit.RetrofitError: metodo POST deve avere un corpo di richiesta
  • Come rilevare quando un'applicazione Android va sullo background e torna in primo piano
  • Android: Come utilizzare Html.TagHandler?
  • Come analizzare l'object JSON da un sito web in un arrayslist in android
  • L'Android support la riproduzione di video in modalità rallentata?
  • Non è stata rilevata alcuna attività di avvio
  • 8 Solutions collect form web for “Come impostare i font personalizzati su EditText Android”

     public class CEditText extends EditText { private Context context; private AttributeSet attrs; private int defStyle; public CEditText(Context context) { super(context); this.context=context; init(); } public CEditText(Context context, AttributeSet attrs) { super(context, attrs); this.context=context; this.attrs=attrs; init(); } public CEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context=context; this.attrs=attrs; this.defStyle=defStyle; init(); } private void init() { Typeface font=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); this.setTypeface(font); } @Override public void setTypeface(Typeface tf, int style) { tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); super.setTypeface(tf, style); } @Override public void setTypeface(Typeface tf) { tf=Typeface.createFromAsset(getContext().getAssets(), "fonts/myfont.ttf"); super.setTypeface(tf); } 

    call questa class in XML come segue

     <yourpackagename.CEditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp"> </yourpackagename.CEditText> 

    Crea una nuova class che estende come EditText

     public class CustomEditTextNormal extends EditText { public CustomEditTextNormal(Context context) { super(context); init(context); } public CustomEditTextNormal(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public CustomEditTextNormal(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); } public void init(Context context) { try { Typeface myFont = Typeface.createFromAsset(context.getAssets(), "fonts/myfont.ttf"); setTypeface(mSearchAndSend.HelveticaLight); } catch (Exception e) { Logger.LogError(e); } } } 

    e includerlo sul tuo XML come

     <com.package.name.CustomEditText/> 

    Che ne dici di creare una nuova class che eredita EditText e imposta il tipo di carattere che desideri e quindi installa la nuova class nel xml?

    Crea una nuova class che eredita da EditText e quindi sovrascrive il public void setTypeface(Typeface tf, int style) e aggiunge il proprio carattere.

    Bisogna fare un metodo nella class comune Come,

     public void setExternalFonts(EdiText tv) { Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/myfont.ttf"); tv.setTypeface(tf); } 

    Ora call questo metodo come

     yourClassName.setExternalFonts(yourEditText); 

    Crea una nuova class che eredita da EditText e quindi sovrascrive il metodo public void setTypeface (tipo Typeface tf, int style) e aggiunge il proprio carattere.

    E utilizzare nella tua attività come questa FontLoader.setQuickSandTypeface (YourEditText) nella tua attività

    prova questo

     public 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) { ((EditText) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "roboto_thin.ttf")); } } catch (Exception e) { e.printStackTrace(); } } 

    Prova questo. Utile anche per pulsanti, TextViews .. qualunque!

     <your.namespace.app.FontEditText app:font="montserrat" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

    Chi è ansible? Da questa parte!

     public class FontEditText extends EditText { public FontEditText(Context context) { this( context, null ); } public FontEditText(Context context, AttributeSet attrs) { this( context, attrs, 0 ); init( context, attrs ); } public FontEditText(Context context, AttributeSet attrs, int defStyle) { super( context, attrs, defStyle ); init( context, attrs ); } public FontEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super( context, attrs, defStyleAttr, defStyleRes ); init( context, attrs ); } private void init(Context context, AttributeSet attrs) { TypedArray ta = context.obtainStyledAttributes( attrs, R.styleable.Fonts ); if ( ta != null ) { String fontAsset = ta.getString( R.styleable.Fonts_font ); if ( !StringUtils.isEmpty( fontAsset ) ) { int type = Integer.parseInt( fontAsset ); Typeface typeFace = FontManager.getInstance( context ).getByType( type ); ta.recycle(); super.setTypeface( typeFace ); } } } } public class FontManager { private static FontManager Instance; private Context context; private Typeface robotoCondensedBold; private Typeface robotoCondensed; private Typeface robotoLight; private Typeface kronica; private Typeface montserrat; private Typeface montserratLight; private Typeface keepCalmMedium; private FontManager(Context context) { this.context = context; this.robotoCondensedBold = Typeface.createFromAsset( context.getAssets(), "fonts/RobotoCondensed-Bold.ttf" ); this.robotoCondensed = Typeface.createFromAsset( context.getAssets(), "fonts/RobotoCondensed-Regular.ttf" ); this.robotoLight = Typeface.createFromAsset( context.getAssets(), "fonts/Roboto-Light.ttf" ); this.kronica = Typeface.createFromAsset( context.getAssets(), "fonts/kronika.ttf" ); this.montserrat = Typeface.createFromAsset( context.getAssets(), "fonts/Montserrat-Regular.ttf" ); this.montserratLight = Typeface.createFromAsset( context.getAssets(), "fonts/Montserrat-Light.ttf" ); this.keepCalmMedium = Typeface.createFromAsset( context.getAssets(), "fonts/KeepCalmMedium.ttf" ); } public synchronized static FontManager getInstance(Context context) { if ( Instance == null ) Instance = new FontManager( context ); return Instance; } public Typeface getByType(int type) { switch ( type ) { case 0: return FontManager.getInstance( context ).getRobotoCondensedBold(); case 1: return FontManager.getInstance( context ).getRobotoLight(); case 2: return FontManager.getInstance( context ).getKronica(); case 3: return FontManager.getInstance( context ).getRobotoCondensed(); case 4: return FontManager.getInstance( context ).getMontserrat(); case 5: return FontManager.getInstance( context ).getMontserratLight(); case 6: return FontManager.getInstance( context ).getKeepCalmMedium(); default: return Typeface.DEFAULT; } } public Typeface getRobotoCondensedBold() { return robotoCondensedBold; } public Typeface getKronica() { return kronica; } public Typeface getRobotoCondensed() { return robotoCondensed; } public Typeface getRobotoLight() { return robotoLight; } public Typeface getMontserrat() { return montserrat; } public Typeface getMontserratLight() { return montserratLight; } public Typeface getKeepCalmMedium() { return keepCalmMedium; } 

    Inoltre, un font_attrs.xml nella cartella res :

     <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Fonts"> <attr name="font" format="enum"> <enum name="robotoCondensedBold" value="0"/> <enum name="robotoLight" value="1"/> <enum name="kronica" value="2"/> <enum name="robotoCondensed" value="3"/> <enum name="montserrat" value="4"/> <enum name="montserratLight" value="5"/> <enum name="keepCalmMedium" value="6"/> </attr> </declare-styleable> </resources> 

    Si noti che è necessario modificare solo FontManager e font_attrs.xml per personalizzare i caratteri!

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.