我有一个主要活动,它的布局是一个scrollView,并且有一个名为[taskLayout]的“线性布局”。
setContentView(R.layout.my_jobs_view_single_holder);
final LinearLayout taskLayout = (LinearLayout)findViewById(R.id.TaskLayout);
然后我正在膨胀另一个视图并将视图添加到主scrollviews.TaskLayout部分。
LayoutInflater pickup_inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = pickup_inflater.inflate(R.layout.my_jobs_view_single_pickup,null);
taskLayout.addView(view);
新添加的视图有一个使用
的listViewADAPTER_PICKUP_PASSENGER extends BaseAdapter
从外部数据库异步加载数据。
主要的scrollview布局如下所示:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fullscreen_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp"
android:background="#0099cc">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/TaskLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:orientation="vertical">
</LinearLayout>
包含listView的布局如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fullscreen_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top"
android:background="@color/bg"
android:orientation="vertical">
<ListView
android:padding="2dp"
android:background="@drawable/border"
android:id="@+id/lst_passenger_pickup"
android:layout_width="fill_parent"
android:minHeight="200dp"
android:layout_height="fill_parent">
</ListView>
一切正常,但listView的高度不是WRAP_CONTENT,它只显示一个项目。当我更改ListView的
时android:layout_height="fill_parent"
到
android:layout_height="200dp"
然后ListView获得200dp的高度。由于某些原因,android:minHeight没有任何效果。
理想情况下,我希望将hight设置为WRAP_CONTENT,这样可以查看所有项目但是它不起作用但是WRAP_CONTENT或FILL_PARENT只显示一个项目并且设置手动高度为200dp有时候太大了如果列表只有一个项目。
到目前为止,我已尝试过以下步骤:
什么都没发生。有人可以解决一些问题吗?
答案 0 :(得分:7)
它会根据您的行高和宽度动态扩展您的列表视图。
public static void getTotalHeightofListView(ListView listView) {
ListAdapter mAdapter = listView.getAdapter();
int totalHeight = 0;
for (int i = 0; i < mAdapter.getCount(); i++) {
View mView = mAdapter.getView(i, null, listView);
mView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
totalHeight += mView.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (mAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}