50

Pourquoi quand j'utilise SimpleCursorAdapter pour ListView i ont la hauteur des éléments dans ListView comme ça - listview imagehauteur élément android listview

(Mon code basé sur this)

Mais lors de l'utilisation des tableaux éléments ListView ont grande hauteur

listview big

(J'apprends listview basé sur this)

mise en ligne pour l'élément listview est

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

Ma question est pourquoi il y a une différence de hauteur des lignes lors de l'utilisation ArrayAdapter et SimpleCursorAdapter?

+0

essayer ceci http://stackoverflow.com/questions/3361423/android-get-listview-item-height/12513898#12513898 –

Répondre

123
android:textAppearance="?android:attr/textAppearanceLarge" 

semble pas d'effet.

android:minHeight="?android:attr/listPreferredItemHeight" 

changé la hauteur pour moi

+0

Fonctionne parfaitement: Merci. –

+1

minHeight a fait l'affaire! – speedynomads

+0

@Bamboo, comment régler cela dans le programme? –

35

L'astuce pour moi n'a pas été réglage de la hauteur - mais la mise en place du minHeight. Cela doit être appliqué à la vue racine de la disposition que votre adaptateur personnalisé utilise pour rendre chaque ligne.

+0

thts gud, a si bien fonctionné –

+0

Passé près d'une heure à essayer de trouver une solution.C'est exactement ce qui a fait l'affaire pour moi. – ejel

9

Vous devez utiliser un remplissage sur la disposition de l'élément de liste afin d'ajouter de l'espace sur les bords de l'élément (il suffit d'augmenter la taille de la police).

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:id="@+id/text1" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="8dp" /> 
1

La hauteur des éléments de vue de liste est ajustée en fonction de son contenu. En première image, pas de contenu. donc la hauteur est très minimale. Dans la deuxième image, la hauteur est augmentée en fonction de la taille du texte. Parce que, vous avez spécifié android: layout_height = "wrap_content".

0

C'est ma solution (Il y a un LinearLayout imbriquée):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/item" 
      android:layout_width="match_parent" 
      android:layout_height="47dp" 
      android:background="@drawable/box_arrow_top_bg" 
      android:gravity="center" 
      android:text="全部收支" 
      android:textColor="#666" 
      android:textSize="16sp" /> 
    </LinearLayout> 

</LinearLayout> 
+0

L'imbrication inutile est une mauvaise pratique et une mauvaise performance. Le LinearLayout imbriqué ne fait pas non plus de différence ici. – afollestad

4

Je l'ai fait quelque chose comme ça:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View view = super.getView(position, convertView, parent); 

    TextView textView = (TextView) view.findViewById(android.R.id.text1); 
    textView.setHeight(30); 
    textView.setMinimumHeight(30); 

    /*YOUR CHOICE OF COLOR*/ 
    textView.setTextColor(Color.BLACK); 

    return view; 
} 

Vous devez mettre les deux champs textView.setHeight (30); textView.setMinimumHeight (30); ou ça ne changera rien. Pour moi cela a fonctionné & j'avais le même problème.

0

Voici mes solutions; Il est mon getView() dans la sous-classe BaseAdapter:

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    if(convertView==null) 
    { 
     convertView=inflater.inflate(R.layout.list_view, parent,false); 
     System.out.println("In"); 
    } 
    convertView.setMinimumHeight(100); 
    return convertView; 
} 

Ici, j'ai mis la hauteur minimale de ListItem à 100;

Questions connexes