我的个人资料页面包含一个包含一些textview和imageview以及listview的linearlayout。 (见图)
问题在于我想让整个页面像在twitter应用程序中一样滚动,而不仅仅是listview。因此列表视图需要扩展到最大高度。
如何强制列表视图扩展到最大大小而不能滚动。
我的linearlayout将是第二个选项,但是需要可以添加自定义arrayadapter和listview中的自定义行。
答案 0 :(得分:8)
您可以通过两种方式实现这一目标:
#1将Header
添加到Listview
View header = inflater.inflate(R.layout.your_header_layout, null);
yourlistview.addHeader(header);
#2您可以根据children设置列表视图高度。使用listview调用此fxn并将所有小部件保存在scrollview中。
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; 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));
listView.setLayoutParams(params);
}
答案 1 :(得分:1)
是的,您可以将滚动视图作为父视图,并为列表视图创建自定义类。 您可以通过此链接查看我的答案
答案 2 :(得分:0)
使用ScrollView打包您的布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
......
</LinearLayout
</ScrollView>
请记住,ScrollView只接收一个孩子。因此,相应地调整原始布局。