ViewPager滚动型ViewPager滚动型(ViewPager in ScrollView)

2019-05-12 04:25发布

我需要有一个ViewPager一个内ScrollView ,但ViewPager只是没有出现时,它在ScrollView ,一切都很好,当我不使用ScrollView

我见过一对夫妇类似这样的问题被问这里的计算器或其他网站和所有的人都已经回答了你把android:fillViewport="true"到你的滚动视图来解决这个问题,但这种方法行不通对我来说, ViewPager仍然没有出现,即使我有android:fillViewport="true"在我的ScrollView

我想的东西在Android的API或东西得到了改变,该溶液不工作了,没有人知道我怎么可能做出ViewPager出现在ScrollView

更新:一个工作滚动型布局XML:

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

            <android.support.v4.view.ViewPager
                android:id="@+id/itemsViewPager2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
            </android.support.v4.view.ViewPager>
    </LinearLayout>
 </ScrollView>

Answer 1:

我跑进过去类似的问题。 浏览型传呼机必须有一组高(也可以不换内容)。 由于ViewPager加载单独的页面,而不是一次全部,就不会知道什么是总结的内容“,其实就是。 设置layout_height到FILL_PARENT或一组DP允许ViewPager静态设置它的高度和其他布局中更做出相应的反应。



Answer 2:

public class YourScrollableViewPager extends ViewPager {

private static final int MATCH_PARENT = 1073742592;

private int currentPageNumber;
private int pageCount;

public YourScrollableViewPager(Context context) {
    super(context);
    prepareUI();
}

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

private void prepareUI() {
    setOffscreenPageLimit(pageCount);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int height = 0;
    if (getChildCount() != 0) {
        View child = getChildAt(currentPageNumber);
        child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int h = child.getMeasuredHeight();
        if (h > height) height = h;
    }
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

public void onPrevPage() {
    onMeasure(MATCH_PARENT, 0);
}

public void onNextPage() {
    onMeasure(MATCH_PARENT, 0);
}}


Answer 3:

我发现我的解决方案使用"HorizontalScrollView" ,而不是ScrollView

首先创建activity_main.xml有下面的代码,在那里你定义ViewPager。

        <?xml version="1.0" encoding="utf-8"?>
           <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >

            <android.support.v4.view.ViewPager
               android:id="@+id/pager"   
               android:layout_width="match_parent"
               android:layout_height="match_parent" />
           </LinearLayout>

后来又创建另一个left.xml定义您的HorizontalScrollView

        <?xml version="1.0" encoding="utf-8"?>
        <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res
              /android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >

           <ImageView
              android:id="@+id/imageView1"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:src="@drawable/ic_launcher" />
        </HorizontalScrollView>


Answer 4:

只需在Android添加:fillViewport =“true”以滚动视图,将工作



文章来源: ViewPager in ScrollView