Adición del android personalizado de la fuente usando lib
Estoy utilizando la librería personalizada de la fuente del androide https://github.com/chrisjenx/Calligraphy .
Pero no hay ningún efecto en textview. Estoy utilizando el siguiente código:
- La ventana emergente AutoCompleteTextView de Android se mueve tras mostrar
- InflateException: Línea de archivo XML binario # 1: Error de inflar clase <unknown> causada por OutOfMemoryError
- Cómo crear una nueva línea o pestaña en <string> XML (eclipse / android)?
- ¿Cómo alineo una barra de herramientas de Android en la parte inferior de la pantalla?
- Biblioteca de diseño de Android - Problemas de relleno / margen de botón de acción flotante
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(new CalligraphyContextWrapper(newBase)); } }
En XML:
<TextView tools:context="" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Touch Listner" android:textSize="18sp" app:fontPath="fonts/gotham-book.ttf" />
En attrs:
<resources> <attr name="fontPath" format="string"/> </resources>
En los activos / font / gotham-book.ttf
- No se puede colocar la vista debajo de RecyclerView
- Cómo configurar la pantalla completa de XML en Android
- Android cómo hacer que ImageView con un minWidth tiene un borde?
- Android: crea automáticamente variables para todos los IDs en xml
- Problemas de procesamiento @ id / visible Android Studio
- Cómo importar el recurso de forma (xml) al código?
- Error cómico en la declaración de forma xml de Android
- Android ImageButton - no se puede obtener la imagen en el centro
Cree la clase que extiende Application, ahora y el código siguiente en ella. Y declararlo en manifiesto bajo etiqueta de aplicación.
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Roboto-ThinItalic.ttf") .setFontAttrId(R.attr.fontPath) .build() );
Quite el espacio de nombres de TextView
.
<TextView tools:context="" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Touch Listner" android:textSize="18sp" fontPath="fonts/gotham-book.ttf" />
(Cambiar app:fontPath
a fontPath
)
Molesto no podemos resolver el espacio de nombres auto-res.
Cree la clase que extiende Application
. Algo como eso:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/DINNextLTPro-Regular.otf") .setFontAttrId(R.attr.fontPath) .build() ); } }
Lo siguiente que debemos hacer es abrir el archivo AndroidManifest.xml
de nuestra aplicación y añadir una referencia a MyApplication
en el atributo android:name
de la etiqueta de la aplicación, por lo que al final el archivo de manifiesto se verá similar a éste:
<?xml version="1.0" encoding="utf-8"?> <manifest package="it.sbsmobile.golife" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:name="com.example.MyApplication"> <activity android:name=".Profile1" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
También, las instrucciones en https://github.com/chrisjenx/Calligraphy dicen para inyectar en el contexto, sobreponiendo un método en la actividad como sigue:
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }
Fuente: LINK
¿Por qué extender la clase de aplicación? RESPONDER
1) Descargue y copie el archivo de fuente (yourfont.ttf) en la carpeta de activos de su proyecto
2) En su Actividad / Fragmento utilice el siguiente código para cargar la fuente
Typeface yourfont = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
3) Encuentre su TextView (o cualquier otra vista en la que desee establecer esta fuente) y utilice el método setTypeface de la vista. p.ej.
TextView textview1 = (TextView) findViewById(R.id.exampletextview); textview1.setTypeface(yourfont);
Esto, por supuesto, viene con un inconveniente, que si hay un montón de vistas que desea aplicar la fuente a usted tendría manualmente setTypeface para cada uno de la vista. En ese caso, puede crear una vista personalizada ampliando la clase Textview. Algo como el siguiente código:
public class MyTextView extends TextView { public MyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyTextView(Context context) { super(context); init(); } public void init() { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/yourfont.ttf"); setTypeface(tf ,1); }
}
Y utilizar esto en xml como <com.yourpackagename.MyTextView />
nombre de <com.yourpackagename.MyTextView />
He utilizado TypefaceTextView lib para obtener los resultados que desea. Por favor, eche un vistazo a ( https://github.com/ragunathjawahar/android-typeface-textview ).
También puede usar la biblioteca de EasyFonts de terceros para establecer variedad de fuentes personalizadas en su TextView
. Al utilizar esta biblioteca, no debería preocuparse por descargar y agregar fuentes a la carpeta assets / fonts. También sobre la creación de objetos Typeface.
Se proporcionan las caras de fuente. ¿Qué te gustaría usar?
- Roboto
- Droid Serif
- Robot droid
- Libertad
- Diversión Raiser
- Android Nation
- Aguacate Verde
- Reconocimiento
Simplemente:
TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this));
Yo tuve el mismo problema.
Aquí, usted necesita hacer dos cosas.
En primer lugar, en xml, agregue dos líneas (como se muestra a continuación) en la raíz del diseño
xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingPrefix"
Y por último, en la clase de actividad,
protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }
¡Yooooo, está hecho !! Sencillo
Ejemplo: http://i.stack.imgur.com/F87JE.png
- ¿Cómo puedo analizar una cadena de fecha con DateFormat?
- El dispositivo sigue perdiendo la conexión regularmente cuando está conectado a Mac Mini