listview - Listview动态分配宽度

  显示原文与译文双语对照的内容
83 2

我想允许ListView在它的宽度上包装它的内容,并使它的与父中心对齐。

这就是普通的ListView给我

这几乎是我想要实现的,只需要ListView在ListView中的最长测试中包装。 当前这是通过声明i 来实现的,这是我想要避免的。

第一个图像的代码:


<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>

我是否必须使用自定义适配器,或者我可以使用当前的适配器? 如果需要使用自定义适配器,我该如何执行这里操作?

时间: 原作者:

129 3

你不需要创建自定义适配器。 下面是一个可以帮助你的例子。


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);
 }
}

上面我已经创建了一个 Activity,我正在获取listview并使用ArrayAdapter设置数据。

我已经创建了两个布局:

第一个布局:包含listview第二个布局: 包含需要显示的textview 。

要在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类来创建定制适配器。

以下是自定义适配器的示例: 如何为已经填充的listview中的每个联系人链接复选框

希望能帮你。

原作者:
...