ScrollView中的ViewPager没有滚动条

时间:2012-08-29 19:49:30

标签: android xml

在我的xml样式中,我在ScrollView中使用了android.support.v4.view.ViewPager。问题是我没有滚动条。当我从一个页面滑动到另一个页面时,ViewPager本身也表现得很奇怪。

将ScrollView设置为固定高度,例如1200dip有助于滚动但不显示ViewPager。 这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fadeScrollbars="true"
    android:fillViewport="true"
    android:scrollbars="vertical" >


    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >



        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/menu"
            />

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

</ScrollView>

提前致谢

3 个答案:

答案 0 :(得分:1)

您没有获得滚动条的原因是因为ViewPager(和RelativeLayout)的高度设置为match_parent而不是wrap_content。这会使其与ScrollView的尺寸相匹配,这种尺寸首先会破坏ScrollView的目的。ScrollView的内容应高于/高于您的ScrollView RelativeLayout本身。

总而言之,您应将ViewPager的身高和wrap_content的身高设置为RelativeLayout。此外,您没有设置希望LinearLayout个孩子出现的顺序/位置;您可能想要更改它(或使用<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:fadeScrollbars="true" android:fillViewport="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/menu" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </ScrollView> 代替)。例如:

{{1}}

答案 1 :(得分:0)

答案 2 :(得分:0)

我有同样的问题,ViewPager表现得很奇怪,我发现原因是因为有些时候ScrollView重新获得焦点,然后ViewPager失去焦点。如果您在ScrollView中有一个ViewPager,并且您希望它始终保持焦点,当您触摸它并且ScrollView永远不会得到焦点时,就会这样做。

    mViewPager= (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(adapter);
    mViewPager.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            mViewPager.getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    });