2016-07-04 35 views
1

我有滾動視圖中的網格視圖和列表視圖(包括分頁)。如何使整個屏幕在Viewpager片段中滾動

這是由此產生的個人滾動,但我需要整個屏幕可滾動與分頁。我試圖使用NestedListView & ExpandableHeightListView但無法正常工作。

任何建議將不勝感激。

enter codXML:: 
<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/swipeContainer" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ScrollView 
    android:id="@+id/scrollView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:clipToPadding="false" 
    android:fillViewport="true" 
    android:paddingBottom="75dp"> 

    <RelativeLayout 
     android:id="@+id/root_rl" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:descendantFocusability="beforeDescendants" 
     android:focusable="true" 
     android:focusableInTouchMode="true"> 

     <TextView 
      android:id="@+id/all_tpcs_heading" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/bg_horizantal_magzine_listview" 
      android:padding="@dimen/ten_dp" 
      android:text="all topics" 
      android:textAllCaps="true" 
      android:textSize="14sp" /> 

     <com.healthyliving.live.utils.ExpandableHeightGridView 
      android:id="@+id/topicsGrid" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/all_tpcs_heading" 
      android:layout_marginTop="@dimen/six_dp" 
      android:clipChildren="true" 
      android:gravity="center" 
      android:horizontalSpacing="@dimen/six_dp" 
      android:isScrollContainer="false" 
      android:numColumns="2" 
      android:stretchMode="none" 
      android:verticalSpacing="@dimen/six_dp" /> 

     <TextView 
      android:id="@+id/rcnt_artcls_heading" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/topicsGrid" 
      android:layout_marginTop="@dimen/six_dp" 
      android:paddingBottom="@dimen/ten_dp" 
      android:paddingLeft="@dimen/ten_dp" 
      android:paddingRight="@dimen/ten_dp" 
      android:paddingTop="@dimen/sixteen_dp" 
      android:text="Recent articles" 
      android:textAllCaps="true" 
      android:textSize="14sp" /> 

     <ListView 
      android:id="@+id/recent_articles_listview" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:layout_below="@+id/rcnt_artcls_heading" 
      android:dividerHeight="@dimen/list_view_divider" /> 

     <ProgressBar 
      android:layout_centerHorizontal="true" 
      android:layout_alignParentBottom="true" 
      android:id="@+id/load_progreebar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:indeterminateDrawable="@drawable/my_progress_indeterminate" 
      android:visibility="gone" /> 
    </RelativeLayout> 
</ScrollView> 

碎片::

recentArticleAdapter = new ExploreRecentArtilcesAdapter(getActivity(),  featuredArticles); 
    mRecentArticles.setAdapter(recentArticleAdapter); 
+0

如果ListView和Gridview優化嵌套在Scroll中,則優化不起作用。裏面的所有視圖都是一次繪製的。所以可能你應該考慮根據你的需求使用一個/多個列的Gridview。 –

+0

分頁工作正常嗎?如果我沒有錯,則需要在滾動視圖內部展開高度列表視圖和網格視圖。如果我錯了,請糾正我。 –

回答

0

如下自定義列表和網格視圖,而不是默認ListViewGridView在佈局XML文件中使用。

自定義的ListView: -

public class CustomListView extends ListView { 

    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); 
    } 
} 

定製的GridView: -

public class CustomGridView extends GridView { 

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

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

    public CustomGridView(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); 
    } 
} 

在這種方法中,如果你發現在垂直滾動和水平輕掃任何困難(因爲你有看法尋呼機)以下使用自定義ScrollView類而不是默認滾動視圖在您的佈局xml文件中。

public class VerticalScrollView extends ScrollView { 

    private float xDistance, yDistance, lastX, lastY; 
    public VerticalScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 
    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     switch (ev.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       xDistance = yDistance = 0f; 
       lastX = ev.getX(); 
       lastY = ev.getY(); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       final float curX = ev.getX(); 
       final float curY = ev.getY(); 
       xDistance += Math.abs(curX - lastX); 
       yDistance += Math.abs(curY - lastY); 
       lastX = curX; 
       lastY = curY; 
       if(xDistance > yDistance) 
        return false; 
     } 

     return super.onInterceptTouchEvent(ev); 
    } 
} 

使用所有這些自定義視圖類在您使用您的當前實現com.healthyliving.live.utils.ExpandableHeightGridView自定義視圖中的相同。希望這個答案能幫助你。

+0

我試圖使用所有這些自定義類..其滾動充分,但掛在不平穩的方式 –

+0

如果這個答案有幫助,然後請接受/投票它。 –

相關問題