【问题标题】:Android: How to access a ScrollView inside a Fragment which is part of an ViewPagerAdapter for a ViewPager2Android:如何访问 Fragment 中的 ScrollView,它是 ViewPager2 的 ViewPagerAdapter 的一部分
【发布时间】:2022-01-25 20:08:00
【问题描述】:

我正在使用带有 ViewPagerAdapter 的 ViewPager2。此适配器包括片段。这个 Fragment 的布局有一个 ScrollView。

我要做的是在单击 MainActivity 中的按钮后将显示的 Fragment 的 ScrollView 滚动到某个位置。但我不知道如何获取 ScrollView。我只知道如何获取显示的项目 (mPager.getCurrentItem)。

详情

Fragement:
public class ChapterFragment extends Fragment {

ViewPagerAdapter:
public class ViewPagerAdapter extends FragmentStateAdapter

MainActivity:
ViewPager2 mPager;
ViewPagerAdapter mAdapter = new ViewPagerAdapter(this);
mPager= findViewById(R.id.viewPager);
mPager.setAdapter(mAdapter);

有人可以帮助我吗? 谢谢。

【问题讨论】:

    标签: android android-viewpager position scrollview


    【解决方案1】:

    当你的按钮被点击时,一个非常不令人满意的答案是:

    ViewPager2 yourViewPager = findViewById(R.id.view_pager);
    String tag = "f" + yourViewPager.getCurrentItem();
    Fragment frag = getSupportFragmentManager().findFragmentByTag(tag);
    if(frag != null) {
        //find scrollview with 'frag.getView().findViewById...' and scroll to required position
    }
    

    【讨论】:

      【解决方案2】:

      你可以在那里做很多事情。

      1. 在活动中实现接口。

      2. 在按钮的 OnClick 上实现以下代码。 在片段中公开滚动视图变量 if(mPager.getCurrentItem() 章节片段实例) { ChapterFragment chapterFragment = (ChapterFragment)mPager.getCurrentItem(); chapterFragment.scrollView.scrollTo(20) //移动到指定位置

      }

      【讨论】:

      • getCurrentItem() 返回一个整数
      • 是的,你是对的
      • 谢谢。它适用于 Fragment frag = getSupportFragmentManager().findFragmentByTag(tag); ChapterFragment chapterFragment = (ChapterFragment)mPager.getCurrentItem();不起作用,因为 getCurrentItem 返回一个整数而不是引用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多