当我运行应用列表时,我在listview
内有scrollview
滚动仅限于第一项。我认为Scrillview是滚动listview这里是我的代码:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.7"
android:padding="10dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/client_detail"
android:text="CLIENT INFORMATION"
android:textColor="@color/colorPrimaryDark"
android:background="@drawable/login_selector"/>
<RelativeLayout
android:id="@+id/rl1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:visibility="gone"
android:layout_below="@+id/client_detail">
/* HERE IS MY SOME OTHER LAYOUT */
</RelativeLayout>
<Button
android:text="CONTACT DETAILS"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/login_selector"
android:textColor="@color/colorPrimaryDark"
android:layout_below="@+id/rl1"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:id="@+id/contactDetails" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/contactDetails"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
请提前感谢,请提供帮助!
答案 0 :(得分:1)
您需要使用ExpandableHeightListView。
答案 1 :(得分:1)
当你使用带有scrollview的listview时,listview中只有一行是可见的,所以你必须根据listview中的元素以编程方式设置listview的高度。你可以创建这样的函数 -
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.AT_MOST);
int totalHeight = 0;
View view = null;
for (int i = 0; i < listAdapter.getCount(); i++) {
view = listAdapter.getView(i, view, listView);
if (i == 0) {
view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
}
view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += view.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
然后在创建的列表视图上使用此方法 -
HourAdapter adapter1=new HourAdapter(getActivity(),day,start,end,x);
listview.setAdapter(adapter1);
setListViewHeightBasedOnChildren(listview);
即使listview的行具有可变高度
,它仍然有效