标签:
ViewPagerIndicatorhttps://github.com/JakeWharton/ViewPagerIndicator
Style是重用控件的一种技术。类似CSS。作用范围只是一个控件而
Theme本质也是一种一种Style技术。作用范围是页面,整个应用程序。
Activity,和布局。    <!-- 指示器 indicator -->
    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/tpi_Indicator
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#FFFFFF" />
    <!-- 内容 -->
    <android.support.v4.view.ViewPager
        android:id="@+id/vp_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取到控件
        ViewPager vpPager = (ViewPager) findViewById(R.id.vp_page);
        tabPageIndicator = (TabPageIndicator) findViewById(R.id.tpi_Indicator);
        // 设置数据
        vpPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager()));
        tabPageIndicator.setViewPager(vpPager);
    }
    private class MyFragmentAdapter extends FragmentPagerAdapter
    {
        public MyFragmentAdapter(FragmentManager fm)
        {
            super(fm);
            framgents.add(new FirstFragment());
            framgents.add(new SencodFragment());
            framgents.add(new ThirdFragment());
            framgents.add(new FourFragment());
            titleList.add("日本");
            titleList.add("美国");
            titleList.add("加拿大");
            titleList.add("芝加哥");
        }
        @Override
        public Fragment getItem(int arg0)
        {
            return framgents.get(arg0);
        }
        @Override
        public int getCount()
        {
            return framgents.size();
        }
        //设置标题
        @Override
        public CharSequence getPageTitle(int position)
        {
            return titleList.get(position);
        }
    }
theme. 和控件的样式。  <style name="AppBaseTheme" parent="android:Theme.Light">
        <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>
    </style>
    <!--  -->
    <!-- <item name="android:divider">@drawable/custom_tab_indicator_divider</item> -->
    <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
        <item name="android:background">@drawable/custom_tab_indicator</item>
        <item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
        <item name="android:textColor">#FF555555</item>
        <item name="android:textSize">16sp</item>
        <item name="android:paddingLeft">8dp</item>
        <item name="android:paddingRight">8dp</item>
        <item name="android:fadingEdge">horizontal</item>
        <item name="android:fadingEdgeLength">8dp</item>
    </style>
    <!-- 字体我也那过来 -->
    <style name="CustomTabPageIndicator.Text" parent="android:TextAppearance.Medium">
        <item name="android:typeface">monospace</item>
    </style>
     */
    public void addTitle(View view)
    {
        framgents.add(new AddFragment());
        titleList.add("新页面");
        // 通过页面刷新
        mAdapter.notifyDataSetChanged();
        // 指示器也要更新
        tabPageIndicator.notifyDataSetChanged();
        // 页面跟踪
        vpPager.setCurrentItem(framgents.size()-1);
    }
Fragment Bug修复。在页面切换的时候。用户在本页面输入的数据会丢失。
原因:碎片在每次创建的时候都会onCreateView`也就是每次都要加载一次布局。解决办法保存上一次布局就好
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        if (rootView == null) {
            rootView = View.inflate(getActivity(), getLayoutId(), null);
            initView(rootView);
        } else {
            // ViewGroup :所有布局的父类
            ViewGroup parent = (ViewGroup) rootView.getParent();
            if (parent != null)// 已经添加
            {
                parent.removeView(rootView);
            }
        }
        return rootView;
    }
标签:
原文地址:http://www.cnblogs.com/ganwei/p/4870466.html