【问题标题】:Scrollview inside Viewpager not scrolling once page is swiped滑动页面后,Viewpager 中的 Scrollview 不会滚动
【发布时间】:2018-02-11 04:55:30
【问题描述】:

我正在开发一个阅读器应用程序,其中我有一个包含 ViewPager 的布局。在这个 ViewPager 中。此 ViewPager 包含 Fragment,其布局文件包含 ScrollView。此 ScrollView 在大多数设备中都能正确滚动,但在设备上不能正确滚动。实际上在应用程序启动时,ScrollView 正在滚动,但是在滑动 viewpager 后,scrollview 的滚动停止工作。我不明白为什么这只发生在一台设备上。 ViewPager 布局如下:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentTop="true"
        android:background="@color/holo_blue_light"
        android:orientation="horizontal"
        android:weightSum="1">

        <ImageView
            android:id="@+id/back_button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0.1"
            android:src="@drawable/left_arrow" />

        <TextView
            android:id="@+id/name"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.7"
            android:gravity="center"
            android:text="Half Girlfriend"
            android:textColor="#000"
            android:textSize="18sp" />


        <ImageView
            android:id="@+id/visible"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0.1"
            android:src="@drawable/hide" />

        <ImageView
            android:id="@+id/settings"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_weight="0.1"
            android:src="@drawable/menu_x" />

    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/page_status"
        android:layout_below="@+id/header"
        android:onClick="clickViewpager" />

    <TextView
        android:id="@+id/toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/page_status"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp"
        android:background="@drawable/oval_border"
        android:padding="12dp"
        android:textSize="20sp"
        android:text="285"
        android:textColor="#fff" />

    <RelativeLayout
        android:id="@+id/page_status"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/bottom_bar_color"
        android:padding="10dp">

        <SeekBar
            android:id="@+id/page_level"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="283" />

        <RelativeLayout
            android:id="@+id/pages_col"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/page_level"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp">

            <TextView
                android:id="@+id/dynamic_no"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="25"
                android:textColor="#000" />

            <TextView
                android:id="@+id/of"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_toRightOf="@+id/dynamic_no"
                android:text="of"
                android:textColor="#000" />

            <TextView
                android:id="@+id/static_no"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_toRightOf="@+id/of"
                android:text="284"
                android:textColor="#000" />

        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

这是片段的布局:

<ScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <RelativeLayout
            android:id="@+id/relative"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:descendantFocusability="blocksDescendants">

            <TextView
                android:id="@+id/getcontent"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_centerInParent="true"
                android:layout_margin="10dp"
                android:gravity="fill_horizontal|fill_vertical"
                android:textColor="#000" />

            <TextView
                android:id="@+id/page"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/getcontent"
                android:layout_centerHorizontal="true"
                android:layout_gravity="center"
                android:layout_margin="10dp"
                android:text="1"
                android:textColor="#000"
                android:textSize="14sp"
                android:visibility="gone" />


        </RelativeLayout>

    </ScrollView>

【问题讨论】:

  • 尝试使用 NestedScrollview
  • 我已经尝试过了,但没有工作,即使我尝试使用 setMovementMethod(new ScrollingMovementMethod());方法但无济于事
  • 在 viewpager 中添加 app:layout_behavior="@string/appbar_scrolling_view_behavior"
  • @DivyeshPatel 上述解决方案不起作用,请帮助
  • 你试过this

标签: android


【解决方案1】:

我找到了解决方案,代码没有问题。实际上我是在 Viewpager 上添加页面转换器作为

mPager.setPageTransformer(true, new ZoomOutPageTransformer());

但它在this 帖子中解决的某些 android 版本中无法正常工作。它在 Lollipop 5.1 和 5.1.1 中也无法正常工作,所以 也可以检查一下:

 if (Build.VERSION.SDK_INT != Build.VERSION_CODES.LOLLIPOP || Build.VERSION.SDK_INT != Build.VERSION_CODES.LOLLIPOP_MR1){
        mPager.setPageTransformer(true, new ZoomOutPageTransformer());
    }

如果有人有更好的解决方案,那么请发布。 我希望我的解决方案对某人有所帮助。感谢大家的贡献。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2013-04-17
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多