2013-04-19 15 views
9

Ho un ListActivity che voglio cambiare l'altezza dell'oggetto fare riferimento a un'altezza dispositivocome impostare l'altezza dell'elemento ListView

public class MainActivity extends ListActivity 
{ 
      . 
      . 
      . 
      setListAdapter(new ArrayAdapter<String>(MainActivity.this, 
       android.R.layout.simple_list_item_1,mainMenuItems)); 
} 

suo il mio ListActivity sul Galaxy Nexus S:

enter image description here

e Galaxy Nexus 7: enter image description here

come dovrei definire gli elementi ListView altezza ???

risposta

20

L'altezza elementi ListView sono l'altezza della voce contenuti del layout, ad esempio android.R.layout.simple_list_item_1 altezza. Se desideri un'altezza diversa, crea un file xml e inserisci un attributo layout_height o minHeight.

Questo è un simple_list_item_1 modificato che si riferisce al valore

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" 
    android:paddingRight="?android:attr/listPreferredItemPaddingRight" 
    android:minHeight="@dimen/your_defined_minumum_height"/> 

e nella vostra dimen.xml

<dimen name="your_defined_minumum_height">48dp</dimen> 
3

È necessario creare il proprio file di layout personalizzato per ciascun elemento ListView. Qui puoi modificare ciò che vuoi e ottenere molti benefici.

5
ListView lvLogs = new ListView(this); 
lvLogs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, logs) { 

     @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.setMinHeight(0); // Min Height 
      textView.setMinimumHeight(0); // Min Height 
      textView.setHeight(44); // Height 
      return view; 
     } 
    }); 

Nota: MinHeight ed è necessario MinimumHeight !!!

impostare l'altezza minima a 0 ~ 20 (o superiore): setMinHeight(?) + setMinimumHeight(?)

Poi il TextView in ListView avrà un'altezza normale (più piccolo di default del ListView)

Se si desidera specifica l'altezza in pixel, quindi usa setHeight(?)

0

Personalizza un adattatore per il tuo ListView con le informazioni di screenHeight (H). Dato che vuoi che lo schermo mostri 9 colonne (elementi), puoi specificare l'altezza di ognuna di esse come H/9. In tal modo, puoi controllare con precisione l'aspetto di ListView indipendentemente dal tipo di dispositivo.

Problemi correlati