每个孩子的android ListView大小

时间:2012-03-22 14:35:25

标签: android listview

我正在使用我的自定义适配器填充ListView,因为我需要在我发送的每个TextView上进行一些特殊格式化。问题是,无论我设置每个TextView的textSize有多小,它们都会被列表中相同数量的空间隔开,如图所示

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>

3 个答案:

答案 0 :(得分:1)

此问题是由于以下行:

textView.setGravity(Gravity.CENTER);

实际上你需要的是什么才能详细解释我?

答案 1 :(得分: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);

现在该视图的边距将与上面定义的布局参数

一致

答案 2 :(得分: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;
    }