我有一个包含页面的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个按钮的图像)。
我如何将其实现到我的代码中?感谢。
答案 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
}
});