0

アクティビティ間をスワイプするには、このFragmentPageAdapter質問への回答で asを使用する必要があることを理解しています。

Fragmentsただし、動かないの周りにフレームを配置しようとしています。画面の端に固定された額縁のようなもので、スワイプするとフレームが固定され、フレームFragments同士がスライドします。基本的にはマスキング効果。どうすればこれを実装できますか?

私の FragmentActivity の FragmentPagerAdapter には、リスト フラグメント (ArrayListFragment) である示されている例と比較して、呼び出す別の Fragment があります。私は一般的なフラグメントを次のように使用します。

public static class TestFragment extends Fragment{
        /**
         * Create a new instance of DetailsFragment, initialized to
         * show the text at 'index'.
         */
        public static TestFragment newInstance(int index) {
            TestFragment f = new TestFragment();

            // Supply index input as an argument.
            Bundle args = new Bundle();
            args.putInt("index", index);
            f.setArguments(args);

            return f;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.mytext, container, false);
            return v;
        }
    }

mytext のレイアウトは非常に単純です。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:text="woohoo"
        android:gravity="center"></TextView>

</LinearLayout>
4

1 に答える 1

1

そのフレームを実装する簡単な方法の 1 つは、ViewPagerを aFrameLayoutまたはその上にRelativeLayoutカスタムとともに配置することです。View

<FrameLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.luksprog.ViewPagerOverlayFrame
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

その customViewonDrawメソッドで、必要なフレームを描画します。以下のコードは、 の端の近くにスワイプできない赤いフレームを描画しますViewPager:

public class ViewPagerOverlayFrame extends View {

    private Paint mPaint;   

    public ViewPagerOverlayFrame(Context context) {
        super(context);
        mPaint = new Paint();
        mPaint.setColor(Color.RED); 
            mPaint.setStrokeWidth(60.0f);       
    }

    public ViewPagerOverlayFrame(Context context, AttributeSet attrs) {
        super(context, attrs);
        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setStrokeWidth(60.0f);       
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawLine(0, 0, getMeasuredWidth(), 0, mPaint);
        canvas.drawLine(getMeasuredWidth(), 0, getMeasuredWidth(),
                getMeasuredHeight(), mPaint);
        canvas.drawLine(getMeasuredWidth(), getMeasuredHeight(), 0,
                getMeasuredHeight(), mPaint);
        canvas.drawLine(0, getMeasuredHeight(), 0, 0, mPaint);
    }

}

ViewPagerコンテンツがフレームによって切り取られないように、 にパディングを追加することをお勧めします。

于 2012-11-04T15:23:19.160 に答える