0

分页视图

我有一个细节活动。在这里面,我使用分页控制器

<android.support.v4.view.ViewPager ..../>用于片段详细信息视图。

我的代码:

ViewPager pager = (ViewPager) findViewById(R.id.pagerHandbookDetails);

/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();

/** Instantiating FragmentPagerAdapter */
DetailsFragmentAdapter pagerAdapter = new DetailsFragmentAdapter(fm,cases);

/** Setting the pagerAdapter to the pager object */
pager.setAdapter(pagerAdapter);
pager.setCurrentItem(0);

然后,Details Fragment Adapter Class 扩展FragmentPagerAdapter

int PAGE_COUNT = 9;

@Override
public Fragment getItem(int arg0) {

    DetailsFragment detailsFragment = new DetailsFragment();
    Bundle data = new Bundle();
    Log.d("Current Page", "Page " + arg0);

    data.putInt("current_page", arg0);
    detailsFragment.setArguments(data);
    return detailsFragment;
}

类详细信息片段扩展Fragment

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle data = getArguments();
    int mCurrentPage = data.getInt("current_page", 0);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        layoutPaging = (LinearLayout) v.findViewById(R.id.layoutPagingView);

        for(int i = 0; i < 9; i++){

            ImageView image1 = new ImageView(layoutPaging.getContext());
            image1.setTag(i);

            if(i == mCurrentPage)
            {
                image1.setImageResource(R.drawable.black_dot);
            }
            else
            {
                image1.setImageResource(R.drawable.white_dot);
            }

            layoutPaging.addView(image1); 
        }
        .......
}

像这样工作得很好。

所以每当我滑动页面时,它显然会移动详细信息页面的所有内容。所以它也会移动我的自定义视图布局以进行分页。而且看起来很奇怪。

我想要这个布局静态并根据滑动页面更改图像内容。

如果我在主要详细信息类中采用此布局,那么我不会获得当前页面的值以从片段适配器更改图像。它只是在片段详细信息类中更改值。

我被困在这里。

4

2 回答 2

1

试试这个工具SimpleOnPageChangeListener来听page变化。

private static class PageListener extends SimpleOnPageChangeListener{
        public void onPageSelected(int position) {
            int  currentPage = position;
 }
    }

在你的里面ViewPagerActivity

private PageListener pageListener;

onCreate()方法内部这样做

    pageListener=new PageListener()
pager.setOnPageChangeListener(pageListener);
于 2013-05-22T06:37:39.617 回答
1

您可以在您的布局中添加页面指示器,由以下机构提供:

https://github.com/Papercloud/SimpleViewPagerIndicator

您只需放置控件并将 viewpager 控制器的对象设置为 SimpleViewPagerIndicator。您可以在此处找到示例代码和实现步骤

使用这些类,您可以获得不会随页面滚动的指标

于 2013-05-22T08:43:44.597 回答