2012-04-30 10 views
36

Pokazuję ci obraz poniżej, w którym wysokość wierszy nie jest taka sama, chcę, aby wiersze miały taką samą wysokość.Jak ustawić wysokość wierszy listy ListView

enter image description here

W moim programie Dostaję dane z usługi XML które parsered i wyświetlania wyniku na widoku listy, ale wysokość wierszy ListView nie są takie same.

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

ja już jestem ustawia wysokość

androida: layout_height = "10dp"

ale wciąż nie to samo, gdy diplaying na ListView.

To jest mój zwyczaj adapter do 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; 
    } 
} 

ktoś proszę mi właściwą drogę do uzyskania pożądanego się wynik.

Z góry dziękuję.

+0

Jeśli używasz niestandardowego adaptera, następnie opublikuj kod metody getView z niestandardowej karty. –

+0

Twoja implementacja powinna zadziałać, musisz gdzieś robić coś innego :). – Warpzit

+0

hi @BharatSharma Po prostu opublikować mój kod niestandardowy, proszę spojrzeć dzięki ... – user755278

Odpowiedz

-2

Przede wszystkim powinieneś użyć sp aby określić rozmiar tekstu bez zanurzenia (dp), po drugie myślę, że masz pewne sprzeczne wymiary, że masz 2 pola tekstowe 15 + 14 dp w układzie TYLKO 10 dp. Spróbuj zwiększyć wysokość układu do 40 dp i zmień wymiary widoku tekstowego, aby użyć sp

2

zastąpić metodę getView(int position, View convertView, ViewGroup parent) w klasie MyEventAdapter i użyć view.setMinimumHeight(minHeight);, aby ustawić minimalną wysokość widoku.

ustawić minimalną wysokość widzenia ze w metodzie `getView (int pozycji, Widok convertView, ViewGroup dominującej)” w następujący sposób:

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> 

Jeśli masz więcej niż jedną linię w tekście, a następnie ustaw tekst jako pojedynczą linię, aby nie pojawił się w drugiej linii i zmień wysokość każdego wiersza.

132

problemem jest to, że jesteś mis-using napełniacz, nie dają null jako węzła głównego

jeśli przejdą null jako węzła głównego, wszystkie parametry ustawione w rozmiarze xml nie działać

poprawny kod jest

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

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

+2

To działało dla mnie! –

+11

Świetna odpowiedź. Facet musi oznaczyć cię poprawnym. – KickingLettuce

+0

To jest odpowiedź i należy ją wybrać jako odpowiedź. Thx @clever boy :)) +1 – alicanbatur

0

Jeśli masz więcej niż jedną linię w tekście, a następnie ustawić swój tekst jako pojedynczy tak, aby nie pojawiła się w drugiej linii i nie zmieniła wysokości każdego wiersza.

Powiązane problemy