2012-03-22 96 views
0

我使用我的自定義適配器填充ListView,因爲我需要在每次發送的TextView上進行一些特殊的格式設置。的問題是,無論怎麼小設置每個的TextView的TEXTSIZE,它們通過在列表中的相同量的空間分開,示出的圖像中android每個小孩的ListView大小

enter image description here

我想在這些視圖之間的間距減小。這是我的getView()方法。

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView textView = (TextView) super.getView(position, convertView, parent); 

     textView.setGravity(Gravity.CENTER); 
     textView.setText(getItem(position).getName()); 
     textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); 
     textView.setTextColor(getItem(position).getClr()); 
     return textView; 
    } 

EDIT1: 什麼其實我想要的是「藍色」,「綠色」應該是緊密聯繫在一起。我想減少它們之間的間距。

EDIT2: XML:

<ListView 
      android:id="@+id/answerlist" 
      android:layout_width="240dp" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@+id/question" > 

     </ListView> 
+0

文字大小在您上面張貼的圖像中看起來都一樣。另外,發佈你的XML文件將會很有幫助。 – prolink007 2012-03-22 14:41:47

+0

試圖改變你的填充 – 2012-03-22 14:43:56

+0

整個XML文件是相當大的,所以我已經放在listView部分。 @ prolink007請參閱編輯 – wirate 2012-03-22 14:50:59

回答

0

嗯......問題是,我用的是默認佈局android.R.layout.simple_list_item_1產生ListView行的視圖。此佈局使用文本外觀「?android:attr/textAppearanceLarge」。我不知道這是什麼樣的填充/邊距設置,但無論我在適配器中做什麼,間距都沒有減小。

所以我所做的是我在res/layout中創建了一個名爲「row.xml」的自定義xml佈局,並在其中放置了一個簡單的TextView。我用這個佈局來擴充我的ListView中的行,空間不見了。以下是構造函數的代碼:

public ColoredAdapter(Context context, ArrayList<ColorElement> values) { 
     super(context, R.layout.row, values); 
     this.context = context; 
     this.values = values; 
    } 
1

這個問題是因爲下面一行:

textView.setGravity(Gravity.CENTER); 

通過你真正需要你能解釋我在細節d的方式?

+0

請參閱edit1請 – wirate 2012-03-22 14:53:09

0

正如jyotiprakash提到的,它可能需要更詳細地描述你正在嘗試做什麼。

但是,從我所看到的您正在嘗試設置邊距。如果是這樣,我會用以下方式去解決它。

..... 
    View someView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.yourViewLayout, null, false); 

    final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

    layoutParams.setMargins(4, 15, 4, 0); 

    //Now you can use your view to set the layout params 
    someView.setLayoutParams(layoutParams); 

現在該視圖的保證金將在符合上述定義的佈局PARAMS

+0

那麼..我不知道我怎麼能解釋它甚至更進一步。但是,請嘗試......正如你在我張貼的圖片中看到的那樣,第一個文本是「藍色」,然後有很多空間,然後是分隔符,在另一個空間之後,有文本「Green 」。我想減少每個TextView和divider之間的空間量。 – wirate 2012-03-22 15:20:09