2017-07-03 18 views
0

私はページを含むビューページを持っています。どちらも基本的にまったく同じですが、1つだけが異なるドロウアブルを使用しています。だから私がする必要があるのは、ページ2が選択されたときにドロワブルを変更し、ページ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"を膨らませています。このレイアウトには、ページ2が選択されたときにドロワブル(6つのボタンの画像のみ)を変更する必要があるxmlが含まれています。

どのように私は自分のコードにそれを実装するのでしょうか?ありがとう。あなたがLayoutFragmentのために行っているよう

答えて

1

以下のフォローが

1.Create 1つの以上の断片を繰り返します。新しく作成されたフラグメントに新しいレイアウト2.Pass NewLayoutFragment

を言います。お使いのアダプタのごgetItem()方法でswitch声明3.Put

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

第2の場合には、新たなフラグメントインスタンスを呼び出します。このように:

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

ねえそんなにありがとう!それだった!ちょうどもっと多くのこと: 今、私は2番目のレイアウトに入っています - 私はボタンもクリック可能にしたいですが、ビューパージャーの1ページ目のどこに来たのかと比較して別のアクティビティにつながなければなりません。私のボタンはどこに実装しますか?再度、感謝します! :=) – MrMee

+0

私はちょうどrelalizedので、私はボタンを別のレイアウトファイルから来ているので私はできません。私はあなたが私の感謝の意味を理解してほしい:) – MrMee

+0

ねえ、私は助けることがうれしい。あなたの 'NewFragment'クラスのボタンに' onClickListener() 'を設定して、あなたの望むActivity/Fragmentを呼び出すことができます。 – SripadRaj

1

あなたはこのようなあなたのviewpagerにPageChangeListenerを設定する必要があります。

_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

関連する問題