Listview动态分配宽度

时间:2013-10-09 09:27:17

标签: android listview android-listview

我希望允许我的ListView在其宽度上包装到其内容并使其与父中心对齐。

这是普通的ListView给我的

这几乎是我想要实现的,只是我希望ListView通过ListView中最长的测试进行换行。目前,这是通过声明dp来实现的,如果可能的话,这是我想要避免的

第一张图片的部分代码:

<ListView
            android:id="@+id/lst_test"
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="wrap_content" >
        </ListView>

第二张图片的一些代码:

<ListView
     android:id="@+id/lst_test"
     android:layout_width="200dp"
     android:layout_height="wrap_content" >
</ListView>

我是否必须使用自定义适配器,或者我可以坚持使用当前适配器?如果我需要使用自定义适配器,我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

您无需创建自定义适配器。这是一个可以帮助你的例子。

public class MainActivity extends Activity {

    HashMap <String, CheckBox> options = new HashMap<String, CheckBox>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView list_view = (ListView) findViewById(R.id.listView1);

        ArrayList<String> str = new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            str.add("Example " + i);
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_layout, R.id.textView1, str);
        list_view.setAdapter(adapter);
    }
}

上面我创建了一个活动,我在其中使用ArrayAdapter获取listview和设置数据。

我创建了两个布局:

第一个布局:包含listview。 第二种布局:包含需要显示的文本视图。

在Listview中心对齐数据的主要逻辑是您需要将textview的重力设置为中心。

您可以根据需要管理第二种布局。

这是我的第一个XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>

这是我的第二个布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:text="TextView" />

</RelativeLayout>

如果您仍然遇到任何问题,那么您可以提问。如果您需要更多灵活性,则可以通过继承ArrayAdapter类来创建自定义适配器。

以下是自定义适配器的示例:How do I link a checkbox for every contact in populated listview?

希望它会对你有所帮助。