CustomScrollView中的ListView折叠

时间:2016-07-28 09:40:40

标签: android listview

您好我是Android开发的新手,我已经阅读了各种线程,其中讨论了ListView不应该位于Scrollview内并需要包含线性或相对布局的事实。

但我有这个布局

<com.itmind.spac.spacapp.custom_extends.CustomScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollViewreceipt"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

    <include
    android:id="@+id/include1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    layout="@layout/toolbar" />

    <Spinner
        android:id="@+id/customers_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
        />
    <Spinner
        android:id="@+id/venues_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
        />
    <Spinner
        android:id="@+id/workgroup_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
        />

        <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical" android:layout_width="wrap_content"
         android:layout_height="wrap_content"
            android:minHeight="150dp">
    <ListView
        android:id="@+id/activityList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="15dp"
        android:minHeight="150dp"
        />
    </LinearLayout >

    <android.gesture.GestureOverlayView
        android:id="@+id/signaturePad"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_weight="5"
        android:background="#d3d3d3"
        android:eventsInterceptionEnabled="true"
        android:fadeEnabled="false"
        android:gestureColor="#333"
        android:gestureStrokeLengthThreshold="0.1"
        android:gestureStrokeType="multiple"
        android:fadeOffset="5000"
        android:orientation="vertical" >
    </android.gesture.GestureOverlayView>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="testImage"
        android:text="testami"/>
</LinearLayout>

这是我的custoScrollView

public class CustomScrollView extends ScrollView {

private boolean enableScrolling = true;

public boolean isEnableScrolling() {
    return enableScrolling;
}

public void setEnableScrolling(boolean enableScrolling) {
    this.enableScrolling = enableScrolling;
}

public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public CustomScrollView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomScrollView(Context context) {
    super(context);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    if (isEnableScrolling()) {
        return super.onInterceptTouchEvent(ev);
    } else {
        return false;
    }
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
    if (isEnableScrolling()) {
        return super.onTouchEvent(ev);
    } else {
        return false;
    }
}
}

我需要自定义类滚动视图因为我可以在触摸时设置启用滚动

所以在我实现GestureOverlayView.OnGestureListener的活动中我有:

 @Override
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
    myScrollView.setEnableScrolling(false);
}
@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
    myScrollView.setEnableScrolling(true);
}

这么多元素我需要scrollView才能查看所有元素。 在我的scrollView中,我有一个listView,我填充数据从db。

我的问题是我的Listview崩溃,显示一行,我看到并在一行中滚动。

我尝试使用min-height但无法正常工作,如果我在Listview中设置了布局高度,则无法滚动此列表。

我该怎么做? 我会列出一个长页面的视图,所以我必须使用scrollview或者有解决方案吗?

2 个答案:

答案 0 :(得分:1)

修复你的身高 像

<ListView
    android:id="@+id/activityList"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:layout_marginTop="15dp"
    />

并在活动文件中添加代码

listView.setOnTouchListener(new View.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;
        }
    });

答案 1 :(得分:0)

以下给定的自定义ListView课程将根据Listview内的ScrollView内容生成ListView的高度。在xml-layout文件中使用它而不是CustomScrollView,就像使用public class CustomListView extends ListView { // private boolean expanded; public CustomListView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomListView(Context context) { super(context); } public CustomListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } } 一样。

(defclass class-a ()
  ((slot-1 :initarg :slot-1 :initform #'identity)
   <...> other-slots<...>))

希望这会对你有所帮助。

注意: - 根据Android开发者网站的this链接,我们不应该使用带有ListView的ScrollView,因为ListView负责自己的垂直滚动。