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:
- ¿Por qué llamar a setBackgroundColor en una vista rompe su cambio de color de clic largo y resaltado?
- Cómo definir ColorStateList para TextView?
- Ordenar la vista de lista con el adaptador de matriz
- Nueva lista expandible altamente personalizable
- Adaptador ListView personalizado Android
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;
- Encabezados ListView sin separadores de elementos de lista
- ¿Cómo agrego un onclicklistener a un botón dentro de un adaptador listview?
- Mostrar diálogo en fragmento android
- Android ListView Edge Fading funciona en un dispositivo virtual 2.2 pero no en Samsung 2.2.1
- Sería mejor ser explícito si se requiere un buffer de 8k-char.
- ¿Por qué la aplicación Android de Facebook se desplaza tan suavemente
- configurar el color de fondo en listview
- ListView en la hoja inferior
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.
- Android: (mala) baja calidad de imagen en el fondo de diseño
- Android: OnMeasure incorrecto – muchas llamadas