当我将它用作scrollview的子项时,我的列表视图不滚动

时间:2017-04-19 06:09:55

标签: android

我正在尝试在滚动视图下添加列表视图,以便我可以滚动整个页面以及列表视图,但是当我的整个页面滚动时,我的列表视图不滚动。

这是我的XML:

          <?xml version="1.0" encoding="utf-8"?>
          <RelativeLayout 
            xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@color/gray">
             <ScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/toolbar"
                android:background="@color/white">


             <LinearLayout
               android:id="@+id/layout_form"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:orientation="vertical">

                 <android.support.v4.view.ViewPager
                    android:id="@+id/viewPager"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:layout_marginBottom="5dp"
                    android:background="@color/trans_white"/>

                 <ListView
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:id="@+id/list_prdt_detail"
                   android:divider="@color/white"
                   android:layout_marginBottom="50dp"
                   android:scrollbars="vertical"/>

                 </LinearLayout>

                 </ScrollView>


                  <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:orientation="horizontal"
                     android:weightSum="2"
                     android:layout_gravity="center"
                     android:gravity="center"
                     android:layout_alignParentBottom="true">

                  <TextView
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="ADD TO CART"
                   android:background="@color/orange"
                   android:layout_weight="1"
                   android:layout_gravity="center"
                   android:gravity="center"
                   android:padding="20dp"
                   android:textColor="@color/white"
                   android:fontFamily="sans-serif"/>

                 <TextView
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="BUY NOW"
                   android:background="@color/red"
                   android:layout_weight="1"
                   android:layout_gravity="center"
                    android:gravity="center"
                   android:padding="20dp"
                   android:textColor="@color/white"
                   android:fontFamily="sans-serif"/>

                 </LinearLayout>

               </RelativeLayout>

这是我的java:

              listAdapter = new 
                 AdapterProddetail(Productdetail.this,al_prod_id,
                   al_prod_image,al_prod_name,al_prod_price,
                   al_prod_disc,al_prod_discount,al_prod_stock,al_prod_cc);
                   list_prdt_detail.setAdapter(listAdapter);
                   list_prdt_detail.setOnItemClickListener(this);
                   list_prdt_detail.setOnTouchListener(new 
                     ListView.OnTouchListener() {

                       public boolean onTouch(View v, MotionEvent event) {
                          int action = event.getAction();
                           switch (action) {
                                    case MotionEvent.ACTION_DOWN:
                                  // Disallow ScrollView to intercept touch 
                                     events.
                     v.getParent().requestDisallowInterceptTouchEvent(true);
                      break;
                     case MotionEvent.ACTION_UP:
                    // Allow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                    } // Handle ListView touch events.
                       v.onTouchEvent(event);
                      return true;
                    }
                 });

我添加了java代码,它将禁止滚动拦截但仍然列出视图不滚动。请帮助我克服这种情况。

2 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}内使用ListView。使用ScrollView代替NestedScrollView

您可以将ScrollView设置为android:nestedScrollingEnabled="true"

进行尝试

试试这个:

ListView

希望这会有所帮助〜

答案 1 :(得分:1)

在您的代码中,v.getParent()是指LinearLayout而不是ScrollView。 使用v.getParent().getParent()

另外,正如#Ferdous Ahamed所提到的,你应该使用NestedScrollView而不是ScrollView