5

PageTransfomerをViewPagerに適用しました。これはうまく機能しますが、PageTransformerをViewPagerに設定したらすぐにページの変換を開始したいと思います。私はすでに試しました:

  • setCurrentItem(int)
  • setCurrentItem(int、true)
  • beginFakeDrag()、fakeDragBy(float)、endFakeDrag()
  • invalidate()
  • 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

次のいずれかを試してください。

  1. コードを入れますonPostCreate()
  2. コードをハンドラーに入れます。すなわちnew Handler().post(new Runnable() { /* your code */ });
于 2013-01-11T16:32:29.557 に答える