Android:如何动态更改ViewPager

时间:2017-07-03 10:55:12

标签: android android-layout

我有一个包含页面的viewpager。两者基本上完全相同,只有一个是不同的drawables。因此,我需要做的就是在选择第二页时更改drawable,并在选择第一页时将其更改回来。我把这一切都用在了一个布局上,但是我无法找到改变抽屉的地方。这是我的代码所以票价:

private void initViewPager()
{
    ViewPager _viewpager = FindViewById<ViewPager>(Resource.Id.viewpager);
    _viewpager.Adapter = new FragmentAdapter(SupportFragmentManager);
}

  public class FragmentAdapter : FragmentPagerAdapter
    {
        public FragmentAdapter(Android.Support.V4.App.FragmentManager fm) : base(fm)
        { 

        }

        public override int Count
        {
            get { return 2; }
        }

        public override Android.Support.V4.App.Fragment GetItem(int position)
        {
            return new LayoutFragment();
        }
    }


    public class LayoutFragment : Android.Support.V4.App.Fragment
    {
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var view = inflater.Inflate(Resource.Layout.Viewpage1, container, false);    

            return view; 
        }
    } 

我正在膨胀&#34; Viewpage1&#34;。这个布局包含我的xml,当选择第二页时,需要更改drawables(只有6个按钮的图像)。

我如何将其实现到我的代码中?感谢。

2 个答案:

答案 0 :(得分:1)

按照以下步骤

1.再创建一个像LayoutFragment那样的片段。说NewLayoutFragment

2.将新布局传递给新创建的片段。

public class NewLayoutFragment : Android.Support.V4.App.Fragment
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        var view = inflater.Inflate(Resource.Layout.Viewpage2, container, false);    // Viewpage2 is your new layout file with 6 buttons.

        return view; 
    }
}

3.在适配器的switch方法中输入getItem()语句,并在第二种情况下调用新的Fragment实例。像这样:

public override Android.Support.V4.App.Fragment GetItem(int position)
    {
        switch(position){
            case 0:
            return new LayoutFragment();

            case 1:
            return new NewLayoutFragment(); // this is your new Fragment with new layout.
        }

    }

我希望这应该有用。 :)快乐的编码。

答案 1 :(得分:1)

您应该将PageChangeListener设置为viewpager,如下所示:

_viewpager.setOnPageChangeListener(new OnPageChangeListener() {


            @Override
            public void onPageScrollStateChanged(int arg0) { }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) { }

            @Override
            public void onPageSelected(int position) {

             switch (position) {

                 //put your logic code here to change what's you want in your layout 


            }

        });