2010-03-17 7 views
21

Comment puis-je modifier la taille de la police dans un élément ListView? Dans mon fichier main.xml, j'ai essayé plusieurs valeurs différentes pour android: textSize (pt, px, sp, dp) et rien ne semble le changer.Modifier la taille de la police dans ListView - Android/Eclipse

Voici ce que j'ai actuellement le dans mon 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"/> 

Voici mon 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); 
    } 

} 

Répondre

27

2 façons de procéder:

  1. Copie simple_list_item_1.xml de sources Android, le modifier et l'utiliser au lieu de android.R.layout.simple_list_item_1;
  2. Utilisez BaseAdapter et modifiez la taille de police dans getView(..) appel.

Je vous suggère d'aller avec ce dernier.

+0

Comment définir où changer la taille dans obtenir la vue? – Shouvik

+0

Comme Alex l'a suggéré, il est logique de remplacer la méthode getView() de l'adaptateur. J'utilise cette approche et ça marche bien. – tamsler

+0

J'ai utilisé l'option 1, car tout ce que je n'ai pas besoin de faire beaucoup, sur la méthode d'équitation GetView ressemble à une surcharge IMO –

0

La réponse rapide est que vous ne pouvez changer la taille du texte par en utilisant votre propre mise en page plutôt que l'android.R.layout.simple_list_item un. En faisant cela, vous pouvez modifier les propriétés TextView telles que la taille du texte. Cependant, si vous n'avez pas travaillé avec des listes avec vos propres mises en page, elles peuvent sembler un peu complexes à utiliser la première fois. Je vais essayer de revenir et modifier cette réponse pour fournir plus d'informations plus tard, mais je vous suggère de rechercher des tutoriels sur les vues de liste personnalisée - qui vous montrera comment créer vos propres fichiers de mise en page.

0

Créer un autre fichier xml pour le texte qui devrait être dans les lignes de la liste ..

et ajoutez simplement Android: layout_height = « android: attr/listPreferredItemHeight » dans votre TextView: D (mettre dans un rapport mise en page plutôt que d'une disposition linéaire)

puis utilisez votre xml précédente ListView pour le setContentView (R.layout.listview)

et l'autre fichier xml dans votre code ArrayAdapter

adaptateur ArrayAdapter = new ArrayAdapter (Cela, R.layout.yoursecondLayoutforthelistswithText, R.id.titles, HistoryList)

l'R.id.titles est l'ID de la TextView

58

Allez dans la mise en page créer un nouveau fichier XML nommé 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" /> 

maintenant dans le code

changement à

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

+1 pour la liste personnalisée Meilleure solution – cbrulak

+1

Neat solution! +1! –

+0

Cette solution ne fonctionne pas lorsque j'essaie –

6

Veuillez créer un autre fichier nommé 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

vous pouvez enregistrer la taille de police dans sharedprefs puis recréer votre adaptateur

et dans votre méthode GetView de l'adaptateur

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