web-dev-qa-db-fra.com

android listview hauteur de l'élément

Pourquoi, lorsque j'utilise SimpleCursorAdapter pour ListView, j'ai des éléments de hauteur dans ListView comme ceci - listview image

(Mon code basé sur this )

Mais lors de l'utilisation de tableaux, les éléments Listview ont une hauteur importante 

listview big

(J'apprends la listview basée sur this )

La disposition des lignes pour la liste d'articles 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 donc la suivante: pourquoi existe-t-il une différence de hauteur de ligne lorsque vous utilisez ArrayAdapter et SimpleCursorAdapter?

51
olegi
  Android:textAppearance="?android:attr/textAppearanceLarge" 

semblait pas d'effet. 

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

changé la hauteur pour moi

131
Bamboo

Le truc pour moi n’était pas de régler la hauteur, mais bien de régler minHeight. Cela doit être appliqué à la vue racine de la disposition utilisée par votre adaptateur personnalisé pour restituer chaque ligne.

35
Evan

Vous devez utiliser un remplissage sur la disposition de l'élément de la liste pour que de l'espace soit ajouté sur les bords de celui-ci (il ne suffit pas 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" />
10
afollestad

J'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é et j'ai eu le même problème.

4
omnisius

La hauteur des éléments de la vue liste est ajustée en fonction de son contenu. Dans la 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".

1
spr

Voici mes solutions; C'est mon getView () dans BaseAdapter sous-classe:

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 défini la hauteur minimale de ListItem à 100;

0
Rakin Afser

Voici ma solution (il existe un LinearLayout imbriqué):

<?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
Praise Song