5

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

  • 设置当前项(整数)
  • 设置当前项(整数,真)
  • beginFakeDrag(), fakeDragBy(float), endFakeDrag()
  • 无效()
  • getAdapter().notifyDataSetChanged()

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

有人有线索吗 ?

谢谢

4

2 回答 2

5

根据奥列格的回答,我的应用程序使用了下面的代码。

我的补充是检查beginFakeDrag()inside的返回结果_invalidatePageTransformer

sendInvalidatePageTransformer()从里面打电话

  • onConfigurationChanged()当方向改变时
  • 在我的片段中的LoaderCallback<Cursor>-methods内

    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);
    }
    

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

于 2013-03-19T08:21:44.653 回答
2

Try one of these things:

  1. Put the code in onPostCreate()
  2. Put the code in a handler; i.e. new Handler().post(new Runnable() { /* your code */ });
于 2013-01-11T16:32:29.557 回答