tipo studio programacion letra fuentes fuente font family como color cambiar agregar android button fonts typeface

programacion - fuentes de android studio



Ayuda de Android para cambiar el tipo de fuente del botón, ¿cómo? (4)

Me gustaría cambiar la fuente que aparece en el texto del botón. Me las he arreglado para hacerlo con texto en la pantalla, vista de texto, pero no puedo encontrar ninguna información o ayuda para aplicar esto a un botón.

Soy un principiante, por lo que se agradecería mucho proporcionar el código para hacerlo. Esto es lo que estoy usando para la vista de texto, pero ¿cómo puedo cambiar la fuente del botón?

TextView txt = (TextView) findViewById(R.id.custom_font); Typeface font = Typeface.createFromAsset(getAssets(), "1543Humane_jenson_bold.TTF"); txt.setTypeface(font);

Gracias lucy x


Botón IS-A TextView, así que hazlo como con un TextView:

Button txt = (Button) findViewById(R.id.custom_font); Typeface font = Typeface.createFromAsset(getAssets(), "1543Humane_jenson_bold.TTF"); txt.setTypeface(font);


Otra alternativa para las soluciones anteriores:

mYourButton = (Button) findViewById(R.id.Button_id); mYourEditText = (EditText) findViewById(R.id.editText_id); Typeface font = ResourcesCompat.getFont(getContext(), R.font.font_name.TTF); mYourButton.setTypeface(font); mYourEditText.setTypeface(font);


Si planea agregar la misma fuente a varios botones, le sugiero que vaya todo el camino y la implemente como un botón de estilo y subclase:

public class ButtonPlus extends Button { public ButtonPlus(Context context) { super(context); } public ButtonPlus(Context context, AttributeSet attrs) { super(context, attrs); CustomFontHelper.setCustomFont(this, context, attrs); } public ButtonPlus(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); CustomFontHelper.setCustomFont(this, context, attrs); } }

Esta es una clase auxiliar para establecer una fuente en un TextView (recuerde, Button es una subclase de TextView) basada en el atributo com.my.package: font:

public class CustomFontHelper { /** * Sets a font on a textview based on the custom com.my.package:font attribute * If the custom font attribute isn''t found in the attributes nothing happens * @param textview * @param context * @param attrs */ public static void setCustomFont(TextView textview, Context context, AttributeSet attrs) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomFont); String font = a.getString(R.styleable.CustomFont_font); setCustomFont(textview, font, context); a.recycle(); } /** * Sets a font on a textview * @param textview * @param font * @param context */ public static void setCustomFont(TextView textview, String font, Context context) { if(font == null) { return; } Typeface tf = FontCache.get(font, context); if(tf != null) { textview.setTypeface(tf); } } }

Y aquí está el FontCache para reducir el uso de memoria en dispositivos más antiguos:

public class FontCache { private static Hashtable<String, Typeface> fontCache = new Hashtable<String, Typeface>(); public static Typeface get(String name, Context context) { Typeface tf = fontCache.get(name); if(tf == null) { try { tf = Typeface.createFromAsset(context.getAssets(), name); } catch (Exception e) { return null; } fontCache.put(name, tf); } return tf; } }

En res / values ​​/ attrs.xml definimos el atributo de estilo personalizable

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CustomFont"> <attr name="font" format="string"/> </declare-styleable> </resources>

Y finalmente un ejemplo de uso en un diseño:

<com.my.package.buttons.ButtonPlus style="@style/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_sometext"/>

Y en res / values ​​/ style.xml

<style name="button" parent="@android:style/Widget.Button"> <item name="com.my.package:font">fonts/copperplate_gothic_light.TTF</item> </style>

Esto puede parecer un montón de trabajo, pero me lo agradecerás una vez que tengas un par de botones y campos de texto en los que quieras cambiar la fuente.


Yo uso así para el botón y funcionó (igual que para TextView) ..

Button enter=(Button) findViewById(R.id.enter); Typeface type=Typeface.createFromAsset(getAssets(), "arial.ttf"); enter.setTypeface(type);

Espero eso ayude...