2017-07-03 50 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