尽快将PageTransformer应用于PagerView

mag*_*ril 5 android android-viewpager

我有一个PageTransfomer应用于ViewPager,它工作得很好,但我想在将PageTransformer设置为ViewPager后立即启动页面转换.我已经尝试过:

  • setCurrentItem(INT)
  • setCurrentItem(int,true)
  • beginFakeDrag(),fakeDragBy(float),endFakeDrag()
  • 无效()
  • getAdapter().notifyDataSetChanged()

我已经在我的活动的onCreate尝试了所有这些,但也许我错了.

有人有线索吗 ?

谢谢

Jel*_*lle 5

基于Oleg的答案使用下面的代码为我的应用程序.

我的补充是检查beginFakeDrag()里面返回的结果_invalidatePageTransformer.

sendInvalidatePageTransformer()从里面打电话

  • onConfigurationChanged() 当方向改变时
  • LoaderCallback<Cursor>在我片段中的方法里面

    private Handler handler = new Handler()
    {
            public void handleMessage(Message msg)
            {
                    switch(msg.what)
                    {
                            case 0:
                                    _invalidatePageTransformer();
                                    break;
                    }
            }
    };
    
    private void _invalidatePageTransformer()
    {
            //no need to invalidate if we have no adapter or no items
            if (this.getAdapter() != null && this.getAdapter().getCount() > 0)
            {
                    //import check here, only fakeDrag if "beginFakeDrag()" returns true
                    if (this.beginFakeDrag())
                    {
                            this.fakeDragBy(0f);
                            this.endFakeDrag();
                    }
            }
    }
    
    public void sendInvalidatePageTransformer()
    {
            this.handler.sendEmptyMessage(0);
    }
    
    Run Code Online (Sandbox Code Playgroud)

编辑:注意:此代码位于自定义ViewPager子类中


Ole*_*ich 2

尝试以下操作之一:

  1. 将代码放入onPostCreate()
  2. 将代码放入处理程序中;IEnew Handler().post(new Runnable() { /* your code */ });

  • 感谢它与 Handler 和 beginFakeDrag()、fakeDragBy(0f)、endFakeDrag() 一起使用 (2认同)