2012-03-22 2 views
0

Я заполняю ListView используя мой пользовательский адаптер, поскольку мне нужно сделать специальное форматирование на каждом TextView, который я отправляю. Проблема заключается в том, что независимо от того, как мало я поставил TextSize каждого TextView, они отделены друг от друга тем же количеством пространства в списке, как показано на рисунке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

+0

попробуйте изменить ваш padding –

+0

Весь xml-файл довольно большой, поэтому я поместил его в элемент listView. @ prolink007 см. edit – wirate

ответ

0

Ну ... Проблема, что я использовал макет по умолчанию android.R.layout.simple_list_item_1 в генерировать представления для строк ListView. Этот макет использует внешний вид текста «? Android: attr/textAppearanceLarge». Я не знаю, какие дополнения/поля это устанавливает, но независимо от того, что я делаю в адаптере, интервал не уменьшался.

Так что я сделал то, что я создал собственный XML-макет с именем «row.xml» в res/layout и разместил там простой 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); 

По д пути, что вам нужно на самом деле вы можете объяснить мне в деталях?

+0

см. Edit1 please – wirate

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

Ну .. я не знаю, как я могу объяснить это еще дальше. Но попытайтесь попробовать ... Как вы можете видеть на картинке, которую я разместил, первый текст - «Синий», тогда есть много места, тогда есть разделитель, а после другой части пространства есть текст «Зеленый ». Я хочу уменьшить это пространство, которое есть между каждым TextView и разделителем. – wirate