Fuente y color del listview del cambio del androide

He encontrado un montón de diferentes maneras de lograr esto, pero no estoy seguro de lo que es mejor para mi escenario.

Este es mi código Java para el listview:

ListView lv; lv = (ListView) findViewById(R.id.favList); 

Este es el código xml de la lista:

 <ListView android:id="@+id/favList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="40dp" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_marginTop="20dp" android:background="@android:color/transparent" android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent" > </ListView> 

Para una vista de texto, añadiría:

 final Typeface fontList = Typeface.createFromAsset(assets, "optima-extra-black.ttf"); lv.setTypeface(fontList); 

Pero esto no funciona para listviews. ¿Cómo puedo cambiar mi fuente en este caso?

Oke Estoy casi allí … Tengo que acceder a mis activos, pero no puedo desde dentro de mi adaptador personalizado. He intentado utilizar los final AssetManager assets = this.getAssets(); Pero eso no me llevará más lejos ..

¿Cómo abordar esto?

  class Myadapter extends BaseAdapter { LayoutInflater lif; ImageView sideArrow; TextView tv; public Myadapter(Context ctx) { lif = (LayoutInflater) ctx .getSystemService(LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return favarets.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View vi = convertView; if (convertView == null) vi = lif.inflate(R.layout.inflate, null); sideArrow = (ImageView) vi.findViewById(R.id.imageViewsidemark); tv = (TextView) vi.findViewById(R.id.textFav); tv.setText(favarets.get(position)); final AssetManager assets = this.getAssets(); final Typeface tvFont = Typeface.createFromAsset(assets, "OPTIMA.TTF"); tv.setTypeface(tvFont); tv.setTextColor(Color.BLACK); return vi; 

Descubrí la solución: D

  public class Myadapter extends BaseAdapter { AssetManager assetManager = getAssets(); LayoutInflater lif; ImageView sideArrow; TextView tv; public Myadapter(Context ctx) { lif = (LayoutInflater) ctx.getSystemService(LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return favarets.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View vi = convertView; if (convertView == null) vi = lif.inflate(R.layout.inflate, null); sideArrow = (ImageView) vi.findViewById(R.id.imageViewsidemark); tv = (TextView) vi.findViewById(R.id.textFav); tv.setText(favarets.get(position)); final Typeface tvFont = Typeface.createFromAsset(assetManager, "OPTIMA.TTF"); tv.setTypeface(tvFont); tv.setTextColor(Color.BLACK); return vi; } } 

La vista de lista en sí no es responsable de dibujar los elementos, sino que utiliza un adaptador para crear los elementos de la lista. Este adaptador crea una vista para mostrar el elemento de lista cuando sea necesario. Para cambiar la fuente utilizada para mostrar el elemento de lista, tiene que cambiar el adaptador para devolver una vista con la nueva fuente. Esto se puede hacer en el método Adapter.getView . Si actualmente está utilizando una implementación de adaptador estándar, puede que tenga que subclase (o reemplazarla completamente).

Necesita crear un custom adapter .

Revisa esta respuesta

Y luego tener un custom xml también.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/textView" android:textSize="20px" android:paddingTop="10dip" android:paddingBottom="10dip"/> </LinearLayout> 

A continuación, establezca el adaptador personalizado en su lista.

 listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList); mListView.setAdapter(listAdapter); 

Sólo tiene que configurarlo en el TextView que está inflando establecer el tipo de letra en el adaptador o en el diseño xml.

  • ¿Cómo crear un spinner con título en él?
  • Android StaggeredGridView dentro de la altura de ListView
  • Pasar la posición en el ListView al niño RecyclerView Adapter
  • Cómo obtener datos de adaptador personalizado en ListView?
  • CheckedTextView no marca de selección de dibujo cuando se selecciona mediante programación
  • ¿Cómo puedo reproducir vídeo en ListView como Instagram y Vine?
  • ¿Cómo recuperar la cadena clicada de un listview usando OnItemClick?
  • SwipeRefreshLayout con múltiples ListViews
  • Cómo detectar Android ListView Scrolling se detuvo?
  • EditText no recibe eventos clave TAB - stock soft vk
  • Android: muestra el contenido de la lista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.