viewpager更新textview(例如粗体)

时间:2014-12-05 09:45:14

标签: android textview android-viewpager

目前我正在使用viewpager进行轮播菜单

这是我如何设置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更新为unbold,如下图所示

http://imgur.com/9EyZDM1

任何人都可以帮我怎么做?谢谢!

2 个答案:

答案 0 :(得分:0)

如果您查看有关ViewPager的{​​{3}},则可以使用ViewPager.setOnPageChangeListener()查看完整示例。

我认为这是一个好的开始。从那里你通知当前Fragment它被“选中”(在你的情况下是粗体文本)并“取消选择”前一个。

答案 1 :(得分:0)

在获取视图后,您可以使用getItem(pos)的{​​{1}}获取上一个,当前和下一个片段视图,请检查这些视图是否存活。

替换您的MyPageAdapter,如下所示

MyPageAdapter's onPageSelected()