studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android android-layout android-listview baseadapter

android - programacion - Cómo establecer la altura de las filas ListView



manual de programacion android pdf (5)

Te estoy mostrando la imagen a continuación en la que la altura de las filas no es la misma, quiero que las Filas sean de la misma altura.

En mi programa, estoy obteniendo los datos del servicio XML que analicé y mostrando el resultado en la vista de lista, pero el alto de las filas de ListView no es el mismo.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@drawable/list_selector" android:padding="3dip" android:layout_width="match_parent" android:gravity="center" android:layout_height="10dp"> <TextView android:layout_height="wrap_content" android:text="ITEM" android:layout_width="wrap_content" android:id="@+id/txtItem" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="15dip" android:textStyle="bold" android:textColor="#040404"></TextView> <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" android:layout_width="wrap_content" android:id="@+id/txtItemTwo" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="14dip" android:textColor="#FF7F50" ></TextView> </LinearLayout>

Ya estoy a la altura

android: layout_height = "10dp"

pero aún no es lo mismo cuando aparece en listView.

Este es mi adaptador personalizado para getVieew: -

public class MyEventAdapter extends BaseAdapter { ArrayList < String > listTitle; ArrayList < String > listFullText; Activity activity; public MyEventAdapter(Activity activity, ArrayList < String > listTitle, ArrayList < String > listFullText) { super(); this.listTitle = listTitle; this.listFullText = listFullText; this.activity = activity; } public int getCount() { // TODO Auto-generated method stub return listTitle.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return null; } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } private class ViewHolder { TextView txtViewTitle; TextView txtViewTitleTwo; } public View getView(int position, View view, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder title; LayoutInflater inflater = activity.getLayoutInflater(); if (view == null) { view = inflater.inflate(R.layout.lview_row, null); title = new ViewHolder(); title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem); title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo); view.setTag(title); } else { title = (ViewHolder) view.getTag(); } title.txtViewTitle.setText(listTitle.get(position)); title.txtViewTitleTwo.setText(listFullText.get(position)); return view; } }

Alguien me complace la forma correcta de obtener el resultado deseado.

Gracias por adelantado.


En primer lugar, debe usar sp para especificar el tamaño de un texto no dip (dp), segundo, creo que tiene algunas dimensiones contradictorias, tiene 2 campos de texto de 15 + 14 dp en un diseño de SÓLO 10 dp. Intente aumentar su altura de diseño a 40 dp y cambie las dimensiones de su texto para usar sp


Si tiene más de una línea en el texto, configure el texto como una sola línea para que no aparezca en la segunda línea y cambie la altura de cada fila.


el problema es que está mal usando el inflador, no le dé nulo como nodo raíz

Si pasa null como nodo raíz, todos los parámetros de tamaño que establece en el xml no funcionan

el código correcto es

view = inflater.inflate(R.layout.lview_row, parent, false);

http://www.doubleencore.com/2013/05/layout-inflation-as-intended/


reemplaza el método getView(int position, View convertView, ViewGroup parent) en tu clase MyEventAdapter y usa view.setMinimumHeight(minHeight); para establecer la altura mínima de vista.

establecer la altura mínima de vista con en el método `getView (int position, View convertView, ViewGroup parent) ''de la siguiente manera:

public View getView(int position, View convertView, ViewGroup parent) { ViewHolder title; LayoutInflater inflater = activity.getLayoutInflater(); if (view == null) { view = inflater.inflate(R.layout.lview_row, null); view.setMinimumHeight(minHeight); //set minimum height of view here title = new ViewHolder(); title.txtViewTitle = (TextView) view.findViewById(R.id.txtItem); title.txtViewTitleTwo = (TextView) view.findViewById(R.id.txtItemTwo); view.setTag(title); } else { title = (ViewHolder) view.getTag(); } title.txtViewTitle.setText(listTitle.get(position)); title.txtViewTitleTwo.setText(listFullText.get(position)); return view; }


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@drawable/list_selector" android:padding="3dip" android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent"> <TextView android:layout_height="wrap_content" android:text="ITEM" android:layout_width="wrap_content" android:id="@+id/txtItem" android:textAppearance="?android:attr/textAppearanceLarge" android:textSize="15sp" android:textStyle="bold" android:textColor="#040404"></TextView> <TextView android:layout_height="wrap_content" android:text="MANUFACTURER" android:layout_width="wrap_content" android:id="@+id/txtItemTwo" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="14sp" android:textColor="#FF7F50" ></TextView> </LinearLayout>

Si tiene más de una línea en el texto, configure el texto como una sola línea para que no aparezca en la segunda línea y cambie la altura de cada fila.