Estoy tratando de cambiar la fuente de TextView
en mi ArrayAdapter
. La fuente chantelli_antiqua.ttf
se encuentra en la carpeta de activos.fuente personalizada para textview en ArrayAdapter
Aquí está mi código Java:
listItemAdapter = new ArrayAdapter<MenuItem>(this, R.layout.listitem, menuItems);
Typeface font = Typeface.createFromAsset(getAssets(), "chantelli_antiqua.ttf");
TextView v = (TextView)listItemAdapter.getView(0, null, null);
v.setTypeface(font);
XML para el diseño listitem:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="30sp"
/>
Estoy seguro el problema radica en el método Adapter.getView(int, View, ViewGroup)
. Simplemente no entiendo qué pasar como variables e intenté null
. Pero esto no hace lo que me gustaría.
Cómo cambiar la fuente del TextView
en el Adapter
a la fuente personalizada?
actualización
De acuerdo con la sugerencia de Pixie he creado un MenuItemAdapter
que se extiende ArrayAdapter<MenuItem>
:
public class MenuItemAdapter extends ArrayAdapter<MenuItem>
{
private Typeface font;
public MenuItemAdapter(Context context, int textViewResourceId, List<MenuItem> objects)
{
super(context, textViewResourceId, objects);
font = Typeface.createFromAsset(context.getAssets(), "chantelli_antiqua.ttf");
}
@Override
public View getView(int position, View view, ViewGroup viewGroup)
{
((TextView)view).setTypeface(font);
return super.getView(position, view, viewGroup);
}
}
y cambiaron mi código java a:
listItemAdapter = new MenuItemAdapter(this, R.layout.listitem, menuItems);
Pero ahora mi aplicación se bloquea después de la
onCreate
del
ListActivity
, pero antes de llegar al punto de interrupción en
getView(...)
, no he sido capaz de averiguar aún por qué. ¿Cualquier sugerencia?
Update2
cambiado el código de getView (...) a:
@Override
public View getView(int position, View view, ViewGroup viewGroup)
{
View v = super.getView(position, view, viewGroup);
((TextView)v).setTypeface(font);
return v;
}
y esto funciona. :)
[Aplicación de fuente personalizada utilizando diseños] (http://androidtrainningcenter.blogspot.in/2013/07/applying-custom-font-in-entire-android.html) – Sameer