滚动视图中的android列表视图我有一个Android布局scrollView里面有很多元素。在底部scrollView我有一个listView然后由适配器填充。我遇到的问题是,Android排除了listView从scrollView就像scrollView已经有可滚动的功能了。我想要listView只要内容是可滚动的,主滚动视图就可以滚动。我怎样才能做到这种行为?这是我的主要布局:<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:fillViewport="true"
android:gravity="top" >
<LinearLayout
android:id="@+id/foodItemActvity_linearLayout_fragments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout></ScrollView>然后以编程方式使用id将组件添加到线性层:foodItemActvity_linearLayout_fragments..下面是加载到线性布局中的视图之一。这是给我带来麻烦的卷轴。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/fragment_dds_review_textView_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reviews:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ListView
android:id="@+id/fragment_dds_review_listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView></LinearLayout>然后,我的适配器将填充此列表视图。下面是Android层次结构查看器的图像,当我单击主滚动视图时:如您所见,它排除了审阅列表视图。我应该能够滚动该页向下看到8个评论,但它只显示给我那3,我可以滚动在极小的部分,评论是。我想要一个全局页面滚动
3 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
这个最短最优解为ScrollView中的ListView问题。
你不必做任何特别的事layout.xml文件或处理父ScrollView上的任何内容。您只需处理子ListView. 您还可以使用此代码在ScrollView中使用任意类型的子视图&执行Touch操作。
只需在java类中添加以下代码行:
ListView lv = (ListView) findViewById(R.id.layout_lv);lv.setOnTouchListener(new OnTouchListener() { // Setting on Touch Listener for handling the touch inside ScrollView @Override public boolean onTouch(View v, MotionEvent event) { // Disallow the touch request for parent scroll on touch of child view v.getParent().requestDisallowInterceptTouchEvent(true); return false; }});
如果你把ScrollView中的ListView然后ListView没有伸展到它的全部高度..下面是解决此问题的方法。
/**** Method for Setting the Height of the ListView dynamically. **** Hack to fix the issue of not showing all the items of the ListView **** when placed inside a ScrollView ****/public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) return; int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.UNSPECIFIED); 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, LayoutParams.WRAP_CONTENT)); view.measure(desiredWidth, MeasureSpec.UNSPECIFIED); totalHeight += view.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params);}
要使用此方法,只需在此方法中传递ListView:
ListView list = (ListView) view.findViewById(R.id.ls);setListViewHeightBasedOnChildren(list);
用于与ExpanableListView一起使用-信贷本尼
ExpandableListView: view = listAdapter.getView(0, view, listView);int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec (ViewGroup.LayoutParams.MATCH_PARENT, View.MeasureSpec.EXACTLY);int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec (ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY);view.measure(widthMeasureSpec, heightMeasureSpec);
- 3 回答
- 0 关注
- 575 浏览
添加回答
举报
0/150
提交
取消