2012-04-30 13 views
36

Ti sto mostrando l'immagine in basso in cui l'altezza delle righe non è uguale voglio che le righe siano della stessa altezza.Come impostare l'altezza delle righe ListView

enter image description here

Nel mio programma mi sto i dati dal servizio di XML che ho parsered e la visualizzazione del risultato sulla visualizzazione elenco, ma l'altezza delle righe ListView non sono gli stessi.

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

Sono già imposta l'altezza

android: layout_height = "10dp"

ma ancora non se stesso diplaying su ListView.

Questo è il mio adattatore personalizzato per 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; 
    } 
} 

Chiunque Me Please il modo corretto per ottenere il risultato desiderato fuori.

Grazie in anticipo.

+0

Se si utilizza un adattatore personalizzato, inserire il codice del metodo getView dall'adattatore personalizzato. –

+0

La tua implementazione dovrebbe funzionare, devi fare qualcos'altro da qualche parte :). – Warpzit

+0

ciao @BharatSharma ho appena postare il mio codice adattatore personalizzato per favore dare un'occhiata grazie ... – user755278

risposta

-2

Prima di tutto si dovrebbe usare sp per specificare la dimensione di un testo non immergere (dp), secondo penso che tu abbia alcune dimensioni contraddittorie si hanno 2 campi di testo di 15 + 14 dp in un layout di soli 10 dp. Prova ad aumentare l'altezza del layout a 40 dp e modifica le dimensioni della tua textview per utilizzare sp

2

metodo override getView(int position, View convertView, ViewGroup parent) nella classe MyEventAdapter e utilizzare view.setMinimumHeight(minHeight); per impostare l'altezza minima della vista.

set altezza minima di vista con in metodo `GetView (int position, Vista convertView, ViewGroup genitore)' come segue:

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

Se si hanno più di una riga nel testo poi imposta il tuo testo come linea singola in modo che non arrivi in ​​seconda riga e cambi l'altezza di ogni riga.

132

il problema è che si è mis-utilizzando il gonfiaggio, non dare nulla come nodo radice

se si passa null come nodo radice, tutti i parametri dimensionali impostati nel XML non funzionare

il codice corretto è

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

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

+2

Questo ha funzionato per me! –

+11

Ottima risposta. Il ragazzo deve segnarti correttamente. – KickingLettuce

+0

Questa è la risposta e questa dovrebbe essere selezionata come risposta. Thx @clever boy :)) +1 – alicanbatur

0

Se si hanno più di una riga nel testo quindi impostare il testo come singolo linea in modo che non arrivi in ​​seconda riga e cambi l'altezza di ogni riga.

Problemi correlati