0

在我的 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>

提前致谢

4

3 回答 3

1

您没有滚动条的原因是因为您的ViewPager(and 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>
于 2012-08-29T20:04:41.540 回答
0
于 2012-09-07T21:42:09.263 回答
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;
        }
    });
于 2012-11-27T20:33:58.200 回答