2012-04-30 121 views
36

我向您展示下面的圖像,其中行的高度不相同我希望行應具有相同的高度。如何設置ListView行高度

enter image description here

在我的節目我是來自我parsered的XML服務獲取數據並顯示在列表視圖中的結果,但ListView控件行的高度不一樣。

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

我已經設置了高度

機器人:layout_height = 「10dp」

,但仍然在ListView控件diplaying時不一樣。

這是我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; 
    } 
} 

誰能請我正確的方式獲得所需的出結果。

在此先感謝。

+0

如果您使用的是自定義適配器,請將自定義適配器的getView方法代碼發佈出去。 –

+0

你的實現應該工作,你必須做別的事情:)。 – Warpzit

+0

嗨@BharatSharma我只是發佈我的自定義適配器代碼請看看謝謝... – user755278

回答

-2

首先,你應該使用SP指定文本的大小不沾(DP),第二個我覺得你有一些矛盾的方面,你有15 + 14的DP的2個文本字段中的只有10個佈局DP。儘量增加你的佈局高度40 DP和改變你的TextView的尺寸,使用SP

2

覆蓋方法getView(int position, View convertView, ViewGroup parent)MyEventAdapter類,並使用view.setMinimumHeight(minHeight);設置的視圖最小高度。

設置與方法`getView(INT位置,查看convertView,一個ViewGroup父)」的視圖最小高度爲:

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> 

如果你有一個以上的線在你的文本,然後將文本設置爲單行,以便它不會進入第二行並更改每行的高度。

132

的問題是,你是誤用充氣機,不給空根節點

,如果你傳遞null作爲根節點,你在XML中設置的所有尺寸參數無法正常工作。

正確的代碼是

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

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

+2

這對我有效! –

+11

很好的答案。這傢伙需要標記你是正確的。 – KickingLettuce

+0

這是答案,應該選擇這個答案作爲答案。 Thx @clever男孩:))+1 – alicanbatur

0

如果你在你的文字有多於一行然後設置你的文本單這樣它就不會進入第二行,並改變每一行的高度。