2014-12-05 58 views
1

目前我使用viewpager做旋转木马菜单viewpager更新的TextView(如粗体)

这里是如何我设置的viewpager

 name = menu.substring(b, menu.length() - 1);//just some strings 
     fragments = getFragments(); 
     pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
     pager = (ViewPager) findViewById(R.id.viewpager); 
     pager.setPageMargin(-700); 
     pager.setOffscreenPageLimit(Menu.size()); 
     pager.setAdapter(pageAdapter); 
     pager.setOnPageChangeListener(pageAdapter); 
     pager.setCurrentItem(pager.getAdapter().getCount() - 1, false); 
     pager.setPageTransformer(true, new ZoomOutPageTransformer()); 

private List<Fragment> getFragments() { 
    fList.add(MyFragment.newInstance(name)); 
    return fList; 
} 

然后我pageadapter类

class MyPageAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener { 
    private List<Fragment> fragments; 
    private FragmentManager fm; 

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fm = fm; 
     this.fragments = fragments; 
    } 
    @Override 
    public Fragment getItem(int position) { 
     return this.fragments.get(position); 
    } 
    @Override 
    public int getCount() { 
     return this.fragments.size(); 
    } 
    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 
    @Override 
    public void onPageSelected(int arg0) { 
    } 
} 

这里是MyFragment类

 public static final MyFragment newInstance(String message) { 
     MyFragment f = new MyFragment(); 
     bdl = new Bundle(1); 
     bdl.putString(EXTRA_MESSAGE, message); 
     f.setArguments(bdl); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     String message = getArguments().getString(EXTRA_MESSAGE); 
     v = inflater.inflate(R.layout.myfragment_layout2, container, false); 
     TextView messageTextView = (TextView) v.findViewById(R.id.textView); 
     messageTextView.setText(message); 

     return v; 
    } 

我想更新的TextView messageTextView大胆当视图是在中间,而其他的TextView的视图的其余部分取消粗体,像下面

http://imgur.com/9EyZDM1

任何人的图片可以帮助我如何去做这个?谢谢!

回答

0

您可以通过使用MyPageAdaptergetItem(pos)获得您的上一个,当前和下一个片段视图,在获得视图后,请检查这些视图是否有效。

更换你MyPageAdapter's onPageSelected()如下,

@Override 
     public void onPageSelected(int pos) { 

      if (pos - 1 >= 0) { 
       Fragment prevFragment = getItem(pos - 1); 
       if (prevFragment.isVisible()) { 
        View currentView = prevFragment.getView(); 
        ((TextView) currentView.findViewById(R.id.textView)) 
          .setTypeface(null, Typeface.BOLD); 
       } 
      } 

      if (pos + 1 < fragments.size()) { 
       Fragment nextFragment = getItem(pos); 
       if (nextFragment.isVisible()) { 
        View currentView = nextFragment.getView(); 
        ((TextView) currentView.findViewById(R.id.textView)) 
          .setTypeface(null, Typeface.BOLD); 
       } 
      } 

      Fragment currentFragment = getItem(pos); 
      View currentView = currentFragment.getView(); 
      ((TextView) currentView.findViewById(R.id.textView)).setTypeface(null,Typeface.BOLD); 
     } 
0

如果您查看有关ViewPagerAndroid documentation,可以使用ViewPager.setOnPageChangeListener()查看完整示例。

我认为这是一个好的开始。从那里你通知当前Fragment它是“选中”(你的案例中粗体文本)和“取消选择”前一个。