2010-03-17 16 views
21

¿Cómo puedo cambiar el tamaño de fuente en un elemento ListView? En mi archivo main.xml, he intentado varios valores diferentes para android: textSize (pt, px, sp, dp) y nada parece cambiarlo.Cambiar el tamaño de fuente en ListView - Android/Eclipse

Aquí es lo que tengo actualmente para el en mi main.xml:

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/list" 
    android:textColor="#ffffff" 
    android:background="#000080" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:dividerHeight="1px" 
    android:layout_marginTop="5px" 
    android:textSize="8px"/> 

Aquí es mi Java:

package com.SorenWinslow.TriumphHistory; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class TriumphHistory extends ListActivity { 
    String[] HistoryList; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ArrayAdapter<String> adapter; 
     HistoryList = getResources().getStringArray(R.array.history); 
     adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,HistoryList); 
     setListAdapter(adapter); 
    } 

} 

Respuesta

27

2 maneras de ir:

  1. Copia simple_list_item_1.xml de fuentes Android, modificarlo y usarlo en lugar de android.R.layout.simple_list_item_1;
  2. Use BaseAdapter y modifique el tamaño de fuente en getView(..) llame.

Le sugiero que vaya con este último.

+0

¿Cómo definir dónde cambiar el tamaño en obtener vista? – Shouvik

+0

Como Alex ha sugerido, tiene sentido anular el método getView() del adaptador. Yo uso este enfoque y funciona bien. – tamsler

+0

Utilicé la opción 1, ya que no necesito hacer mucho, sobre montar el método getView suena como una superación IMO –

0

La respuesta rápida es que sólo se puede cambiar el tamaño del texto usando su propio diseño en lugar de android.R.layout.simple_list_item uno. Al hacerlo, puede cambiar las propiedades de TextView, como el tamaño del texto. Sin embargo, si no ha trabajado con listas con sus propios diseños, pueden parecer un poco complejas de usar la primera vez. Intentaré volver y editar esta respuesta para proporcionar más información más adelante, pero le sugiero que busque tutoriales en las vistas de listas personalizadas, que le mostrarán cómo crear sus propios archivos de diseño en inflate.

0

Cree otro archivo XML para el texto que debe estar en las filas de la lista ..

y sólo tiene que añadir androide: layout_height = "android:? Attr/listPreferredItemHeight" en su TextView: D (ponerlo en un pariente diseño en lugar de un diseño lineal)

y luego utilizar el código XML ListView anterior para el setContentView (R.layout.listview)

y el otro archivo XML en el código ArrayAdapter

adaptador ArrayAdapter = new ArrayAdapter (Esto, R.layout.yoursecondLayoutforthelistswithText, R.id.titles, HistoryList)

la R.id.titles es el identificador para el TextView

58

Id a disposición de crear un nuevo archivo XML denominado mylist.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
     android:paddingTop="2dip" 
     android:paddingBottom="3dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

ahora en el código

cambio a

 adapter = new ArrayAdapter<String> (this,R.layout.mylist,HistoryList); 
+5

+1 para la lista personalizada. Solución mucho mejor – cbrulak

+1

Solución genial! +1! –

+0

Esta solución no funciona cuando intento para hacer una lista de radio de la misma, ¿alguna idea sobre eso? –

6

Cree otro archivo llamado list_item.xml

<?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="6dp" 
    android:textSize="21sp"> 

-1

puede guardar tamaño de fuente en sharedprefs y volver a crear su adaptador

y en su método getView del adaptador

holder.text.setTextSize(TypedValue.COMPLEX_UNIT_SP,G.mSharedPreferences.getFloat("fontTwosize", 25)); 
Cuestiones relacionadas