100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ScrollView中嵌套ListView

ScrollView中嵌套ListView

时间:2019-01-05 02:30:33

相关推荐

ScrollView中嵌套ListView

放置比较少的ListView组件效果图:

Item布局文件 list_view_item.xml 布局文件的内容:

<RelativeLayout xmlns:android="/apk/res/android"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="50dp"

>

<ImageView

android:id="@+id/list_view_img"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="5dip"

android:padding="5dip" />

<TextView

android:id="@+id/list_view_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:gravity="center_vertical|center_horizontal"

android:layout_marginLeft="50dip"

android:text="@string/title_listview_activity"

android:textColor="#000"

android:textSize="16dp"

tools:context=".ListViewActivity" />

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="260dip"

android:src="@drawable/img_go"

android:padding="5dip" />

</RelativeLayout>

在Activity界面中放置ListView时,ListView组件比较少时,不需要滑动,这几个ListView组件都可以正常显示,当放置多时就不能如我们所愿,我们可以使用ScrollView组件来嵌套ListView组件这样就可正常显示了,原理就是 我们在代码中动态设置ListView组件的高度,下面我们来看srollView视图中嵌套ListView组件实现的方法:

/*

* 动态设置ListView组建的高度

*

* */

public void setListViewHeightBasedOnChildren(ListView listView) {

ListAdapter listAdapter = listView.getAdapter();

if (listAdapter == null) {

return;

}

int totalHeight = 0;

for (int i = 0; i < listAdapter.getCount(); i++) {

View listItem = listAdapter.getView(i, null, listView);

listItem.measure(0, 0);

totalHeight += listItem.getMeasuredHeight();

}

ViewGroup.LayoutParams params = listView.getLayoutParams();

params.height = totalHeight

+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));

// params.height += 5;// if without this statement,the listview will be

// a

// little short

// listView.getDividerHeight()获取子项间分隔符占用的高度

// params.height最后得到整个ListView完整显示需要的高度

listView.setLayoutParams(params);

}

在为ListView组件的实例设置适配器时候,要对组件高度进行动态设置,调用上面的setListViewHeightBasedOnChildren(listView)方法即可:

listView.setAdapter(adapter);

setListViewHeightBasedOnChildren(listView);

listView1.setAdapter(adapter1);

setListViewHeightBasedOnChildren(listView1);

listView2.setAdapter(adapter2);

setListViewHeightBasedOnChildren(listView2);

动态配置ListView组件高度以后,效果图上方 第二张片所示!!!!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。