android - ViewPager 内的多个 NestedScrollViews 不滚动

标签 android android-layout

我有一个 ViewPager,它在每个页面上显示不同的 fragment 。所有 fragment 都有一个 NestedScrollView 作为它们的 Root View 。所以本质上是这样的:

first_fragment_layout.xml:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="4dp"/>

</android.support.v4.widget.NestedScrollView>

second_fragment_layout.xml:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <!-- Various irrelevant views -->

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

...等等

fragment 是通过我的 FragmentPagerAdapter 类实例化的,如下所示:

private class ViewPagerAdapter extends FragmentPagerAdapter
{
    private final List<String> mFragmentNameList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm)
    {
        super(fm);
    }

    @Override
    public Fragment getItem(int position)
    {
        return Fragment.instantiate(getContext(), mFragmentNameList.get(position));
    }

    @Override
    public int getCount()
    {
        return mFragmentNameList.size();
    }

    void add(String fragmentName)
    {
        mFragmentNameList.add(fragmentName);
    }
}

我的问题是 NestedScrollView 一次只能滚动其中一个 fragment (通常不能滚动当前页面上的 fragment )。似乎有一个问题,即在任何时候只能激活一个 NestedScrollView(首先膨胀的那个)。我推断这是因为能够滚动的 fragment 总是直接在不能滚动的 fragment 旁边,默认情况下,ViewPager 的内存中最多保留两个 fragment (即 ViewPager.setOffscreenPageLimit(int limit) 默认为 1)

最佳答案

休息了20分钟,马上解决了。 ViewPager 需要通过 xml android:nestedScrollingEnabled="true" 或通过 ViewCompat.setNestedScrollingEnabled(viewPager, true) 以编程方式启用嵌套滚动(>= API 21 only)

关于android - ViewPager 内的多个 NestedScrollViews 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069897/

相关文章:

android - 动画窗口布局更改

android - 如何制作侧边栏菜单

android - 从数据库中检索数据并将其显示到屏幕

java - 如何将布局添加到卡片 View 中?

java - 构建依赖于 Android 项目 Gradle 的 Java 库

Android:如何更改默认日志记录级别?

android - LinearLayout 内的 ListView 不会增长以显示所有子项

java.lang.NoClassDefFoundError : com. parse.Parse 在 android 中

android - 如何在 Material Design 中使用 appCompat 自定义上下文操作栏

android - 溢出的 UI 布局