当前位置: 首页 > 知识库问答 >
问题:

当viewpager中的片段对用户可见时显示工具提示

强硕
2023-03-14

我需要执行一个方法,当片段是可见的(对用户)。此方法用于在片段内显示工具提示。

我有一个活动在布局的底部有viewpager和menubar来导航一个片段。而且我还禁用了ViewPager的滑动。

当片段可见或活动时,我需要调用showTooltip()。我试过使用on resume和setUserVisibleHint(),但仍然不起作用。当viewpager移动到可见页时不显示工具提示。

public void showTooltip(){
    Tooltip.make(getActivity(),
    new Tooltip.Builder(101)
    .anchor(gridSearch, Tooltip.Gravity.CENTER)
    .closePolicy(new Tooltip.ClosePolicy()
    .insidePolicy(true, false)
    .outsidePolicy(true, false), 3000)
    .activateDelay(1500)
    .showDelay(300)
    .text("Click to see all videos.")
    .maxWidth(500)
    .withArrow(true)
    .withOverlay(true)
    .floatingAnimation(Tooltip.AnimationBuilder.DEFAULT)
    .build()
     ).show();
}

共有1个答案

慎星纬
2023-03-14

需要注意的是,该片段显示您可以使用具有回调的ViewPager.OnPageChangelistener,该回调是在切换ViewPager的页面时调用的:

 mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int i, float v, int i2) {

    }

    @Override
    public void onPageSelected(int i) {
        //here you can show yours tooltip
    }

    @Override
    public void onPageScrollStateChanged(int i) {

    }
});
 类似资料:
  • 我所拥有的 我不能使用onResume(),因为左边和右边的片段已经创建了。我不能使用setUserVisibilityHint(),因为它是在onCreateView()之前调用的,所以视图还没有准备好。 那么,当某个特定片段对用户可见时,应该采用什么方法来动画视图呢?

  • 在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。是否有像这样的方法,每次片段出现在屏幕上时都会调用它?等是在创建片段之后调用的,而不是在片段出现在屏幕上时调用的,因此它们对我不起作用。我的问题可以用哪种方法?

  • 我使用来显示几个片段,在我的上也有。我需要更改中的文本,这取决于当前在中选择的片段。我遇到的问题是:有一些缓存机制,它在片段对用户真正可见之前对它们进行实例化,例如,当我在中选择第二个页面时,也创建了第三个页面的片段。更重要的是,我不能确定片断内部是现在可见的片断还是它只是由创建的,但对用户来说并不是真的可见的。我尝试使用来实现这一目的,但对我来说,对它所做的更改速度太慢(页面滚动,然后我的已经更

  • 我找到的唯一解决办法就是打电话给 在显示父片段之后。这会以某种方式触发视图被重新创建并出现在屏幕上。不幸的是,这有时会导致在旧的观察器上处理两次调用的寻呼机适配器时出现异常。 有没有更好的办法做到这一点?我想我要问的是:

  • 我注意到SectionsPagerAdapter的getItem()方法在重新访问后从未被调用。请问我如何让我的片段在viewpager显示后,重新访问?

  • 我有FragmentA和FragmentB,当FragmentA变回可见时,我有一个设置活动标题的问题。 流动 null 碎片b