0

我知道为了在活动之间滑动,我需要在这个FragmentPageAdapter问题的答案中使用 as 。

但是,我试图在Fragments不移动的周围放置一个框架。像相框一样,它停留在屏幕边缘的位置,当您滑动时,框架停留在原位,而Fragments在彼此之间滑动。基本上,掩蔽效果。我该如何实施?

在我的 FragmentActivity 的 FragmentPagerAdapter 中,与所示的示例相比,我有一个不同的 Fragment,它是一个列表片段 (ArrayListFragment)。我这样使用通用片段:

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

实现该框架的一种简单方法是将ViewPageraFrameLayout或 aRelativeLayout与自定义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 回答