2017-07-03 65 views
0

我有一个包含页面的viewpager。两者基本上完全一样,只有一个具有不同的drawable。所以我需要做的是在选择页面2时更改drawable,并在选择页面1时将其更改回来。我把这一切全部用于ONE布局,但我无法找到更换drawable的位置。这是我的代码如此优惠:Android:如何动态更改ViewPager的布局

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; 
     } 
    } 

我正在充气“Viewpage1”。这个布局包含了我的xml,当选择页面2时需要更改drawables(只是6个按钮的图像)。

我该如何将它实现到我的代码中?谢谢。

回答

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.Put在你的适配器的getItem()方法switch声明,并呼吁在第二种情况下,新的片段实例。像这样:

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. 
     } 

    } 

我希望这可以工作。 :)快乐的编码。

+0

嘿太感谢你了!就是这样!只是更多的事情: 现在,当我在我的第二个布局 - 我希望我的按钮也可以点击 - 但他们必须导致另一个活动相比,当他们在ViewPager的第一页时导致的。我在哪里实现我的按钮?再次感谢! :=) – MrMee

+0

因为我只是介绍了一下,我不能初始化我的按钮,因为它们来自另一个布局文件。我希望你明白我的意思是谢谢:) – MrMee

+0

嘿,很高兴我能帮上忙。你可以在你的'NewFragment'类中为你的按钮设置'onClickListener()'并且调用你想要的Activity/Fragment。 – SripadRaj

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 


      } 

     }); 
+0

谢谢你!同样好的答案:) – MrMee