50

Por qué cuando uso SimpleCursorAdapter de ListView i tener elementos altura en ListView como esto - listview imageelemento listview androide altura

(Mi código basado en this)

Pero cuando se usan matrices artículos Listview tienen gran altura

listview big

(me entero de vista de lista basado en this)

diseño fila de vista de lista artículo es

<?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"/> 

Así que mi pregunta es por qué hay una diferencia en la altura de las filas al utilizar ArrayAdapter y SimpleCursorAdapter?

+0

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

Respuesta

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

seem no effect.

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

cambia la altura para mí

+0

Funciona perfectamente: Gracias. –

+1

minHeight hizo el truco! – speedynomads

+0

@Bamboo, ¿cómo configurar esto en el programa? –

35

El truco para mí no era la creación de la altura - pero en su lugar establecer el minHeight. Esto se debe aplicar a la vista raíz de cualquier diseño que use su adaptador personalizado para representar cada fila.

+0

este truco, funcionó tan bien –

+0

Pasé casi una hora tratando de encontrar una solución.Esto es exactamente lo que hizo el truco para mí. – ejel

9

Debe usar relleno en el diseño de la lista de elementos para que se agregue espacio en los bordes del elemento (simplemente aumentar el tamaño de la fuente no hará eso).

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

El alto de los elementos de la vista de lista se ajusta en función de su contenido. En la primera imagen, sin contenido. así que la altura es muy mínima. En la segunda imagen, la altura aumenta según el tamaño del texto. Porque, especificaste android: layout_height = "wrap_content".

0

Esta es mi solución (Hay un LinearLayout anidada):

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

Anidar innecesariamente es una mala práctica y perjudicial para el rendimiento. El LinearLayout anidado no hace una diferencia aquí, tampoco. – afollestad

4

que hice algo por el estilo:

@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; 
} 

Debe poner los dos campos textView.setHeight (30); textView.setMinimumHeight (30); o no cambiará nada. Para mí funcionó & tuve el mismo problema.

0

Aquí están mis soluciones; Es mi getView() en BaseAdapter subclase:

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; 
} 

Aquí he puesto altura mínima de ListItem a 100;

Cuestiones relacionadas