2012-05-29 18 views
2

我有三個字符串數據數組,我想通過適配器在列表中擴充它們。問題是排它是固定的高度,我增加甚至我把30dip,50dip,100dip,高度不生效:(Android,如何增加列表適配器中的行高?

這行我的XML代碼:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    xmlns:android     = "http://schemas.android.com/apk/res/android" 
    android:layout_width   = "fill_parent" 
    android:layout_height   = "fill_parent" // even when i change it to 30dip, 50dip and etc. doesn't take effect 
    android:background    = "@color/septator_grey_light"> 


    <TextView 
     android:id      = "@+id/tvStatisticsTitle" 
     android:layout_width   = "wrap_content" 
     android:layout_height   = "wrap_content" 
     android:layout_centerInParent = "true" 
     android:gravity     = "center_vertical|center" 
     android:text     = "@string/test_10" 
     style       = "@style/simpletopic.black" /> 


    <TextView 
     android:id      = "@+id/tvStatisticsHost" 
     android:layout_width   = "wrap_content" 
     android:layout_height   = "wrap_content" 
     android:layout_alignBaseline = "@+id/tvStatisticsTitle" 
     android:layout_alignBottom  = "@+id/tvStatisticsTitle" 
     android:layout_alignParentLeft = "true" 
     android:layout_marginLeft  = "20dp" 
     android:text     = "@string/test_02" 
     style       = "@style/simpletopic.black.big" /> 


    <TextView 
     android:id      = "@+id/tvStatisticsGeust" 
     android:layout_width   = "wrap_content" 
     android:layout_height   = "wrap_content" 
     android:layout_alignBaseline = "@+id/tvStatisticsTitle" 
     android:layout_alignBottom  = "@+id/tvStatisticsTitle" 
     android:layout_alignParentRight = "true" 
     android:layout_marginRight  = "20dp" 
     android:text     = "@string/test_02" 
     style       = "@style/simpletopic.black.big" /> 

</RelativeLayout> 

和我的適配器代碼如下所示。

public class StatisticsAdapter extends BaseAdapter { 

    private final String TAG = "*** StatisticsAdapter ***"; 
    private final String[] TITLE = {"Shots on Target", "Shots Wide", "Offsides", "Corners", "Possession", "Fouls"}; 

    private LayoutInflater myInflater; 

    private String[] hostInfo; 
    private String[] guestInfo; 

    public StatisticsAdapter(Context context) { 
     myInflater = LayoutInflater.from(context); 

     Log.i(TAG, "Adapter setuped successfully."); 
    } 

    public void setData(Statistics statisticsItems) { 

     hostInfo = new String[6]; 
     guestInfo = new String[6]; 

     hostInfo[0] = statisticsItems.getHomeTeamShotsTarget(); 
     hostInfo[1] = statisticsItems.getHomeTeamShotsWide(); 
     hostInfo[2] = statisticsItems.getHomeTeamOffsides(); 
     hostInfo[3] = statisticsItems.getHomeTeamCorners(); 
     hostInfo[4] = statisticsItems.getHomeTeamPossession(); 
     hostInfo[5] = statisticsItems.getHomeTeamFouls(); 

     guestInfo[0] = statisticsItems.getAwayTeamShotsTarget(); 
     guestInfo[1] = statisticsItems.getAwayTeamShotsWide(); 
     guestInfo[2] = statisticsItems.getAwayTeamOffsides(); 
     guestInfo[3] = statisticsItems.getAwayTeamCorners(); 
     guestInfo[4] = statisticsItems.getAwayTeamPossession(); 
     guestInfo[5] = statisticsItems.getAwayTeamFouls(); 

     Log.i(TAG, "Data passed to the adapter."); 
    } 

    @Override 
    public int getCount() { 
     return TITLE.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder;   

     if (convertView == null) { 
      convertView = myInflater.inflate(R.layout.list_statistics_adapter, null); 
      holder  = new ViewHolder(); 
      holder.tvStatisticsHost = (TextView) convertView.findViewById(R.id.tvStatisticsHost); 
      holder.tvStatisticsTitle = (TextView) convertView.findViewById(R.id.tvStatisticsTitle); 
      holder.tvStatisticsGeust = (TextView) convertView.findViewById(R.id.tvStatisticsGeust); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 


     holder.tvStatisticsHost.setText(hostInfo[position]); 
     holder.tvStatisticsTitle.setText(TITLE[position]); 
     holder.tvStatisticsGeust.setText(guestInfo[position]); 

     return convertView; 
    } 

    static class ViewHolder { 
     TextView tvStatisticsHost; 
     TextView tvStatisticsTitle; 
     TextView tvStatisticsGeust; 
    } 
} 

任何建議,將不勝感激。謝謝

回答

3

高度必須WRAP_CONTENT。添加一些視圖(空視圖)具有固定的高度和寬度,並把它們作爲利潤率。

<View 
    android:id="@+id/view1" 
    android:layout_width="wrap_content" 
    android:layout_height="20dp" /> 

這應該做的伎倆。你甚至可以將他們的背景改變爲任何你想要的。 (但是你應該設置一些寬度,如果你想顯示該背景)

+1

謝謝,它的工作正常。但是問題是什麼?是否相對佈局的設置高度不起作用? – Hesam

+0

我認爲你可以使用填充來增加尺寸並使用TextAppearanceLarge主題代替 –

3

在你的getView()中嘗試使用myInflater.inflate(R.layout.list_statistics_adapter, parent, false)而不是myInflater.inflate(R.layout.list_statistics_adapter, null)。當指定父親時,RelativeLayout會更好。

+0

這就是更好的答案!謝謝。 – StefMa

相關問題