zoukankan      html  css  js  c++  java
  • ViewPage第二课为ViewPage加入标题

    在第一课

    学前准备:掌握ViewPage第一课http://blog.csdn.net/wei_chong_chong/article/details/50468832
    为ViewPage加入标题:
    PageTabStrip是PageTitleStrip的子类
    PageTabStrip的使用与PageTitleStrip全然一样,
    实现效果。pageTabStrip的标题文字带有Indicator。而且能够通过点击标题切换页面的显示。
    使用直接把以下的第一步中的<android.support.v4.view.PagerTitleStrip换成android.support.v4.view.PagerTabStrip即可了

    布局文件:

    在<android.support.v4.view.ViewPager节点下加入子节点:


     

    <android.support.v4.view.PagerTabStrip
                android:layout_width="fill_parent"
                android:layout_height="50dp" >
            </android.support.v4.view.PagerTabStrip>

    详细例如以下:

     <android.support.v4.view.ViewPager
            android:id="@+id/vp_viewpage"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@+id/rg_tab" >
    
            <android.support.v4.view.PagerTabStrip
                android:layout_width="fill_parent"
                android:layout_height="50dp" >
            </android.support.v4.view.PagerTabStrip>
        </android.support.v4.view.ViewPager>


    第二步:MainActivity中加入

    private List<String> titles;
    并初始化
    titles = new ArrayList<String>();
    titles.add("page01");
    titles.add("page02");
    titles.add("page03");
    titles.add("page04");
    并在内部类中实现方法:




    @Override
    public CharSequence getPageTitle(int position) {
    // TODO Auto-generated method stub
    return titles.get(position);
    }


    详细例如以下:

    public class MainActivity extends Activity {
    	private ViewPager viewpager;
    	private List<View> children;
    
    	private List<String> titles;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		viewpager = (ViewPager) findViewById(R.id.vp_viewpage);
    		children = new ArrayList<View>();
    		children.add(LayoutInflater.from(this).inflate(R.layout.page01, null));
    		children.add(getLayoutInflater().inflate(R.layout.page02, null));
    		children.add(getLayoutInflater().inflate(R.layout.page03, null));
    		children.add(getLayoutInflater().inflate(R.layout.page04, null));
    		titles = new ArrayList<String>();
    		titles.add("page01");
    		titles.add("page02");
    		titles.add("page03");
    		titles.add("page04");
    		viewpager.setAdapter(new InnerPagerAdapter());
    	}
    	public class InnerPagerAdapter extends PagerAdapter{
    		@Override
    		public CharSequence getPageTitle(int position) {
    			// TODO Auto-generated method stub
    			return titles.get(position);
    		}
    
    		@Override
    		public int getCount() {
    			//获取子级布局的数量
    
    			return children.size();//返回viewpage容器中子级布局的个数,
    		}
    
    		@Override
    		public boolean isViewFromObject(View view, Object object) {
    			// 推断某个View对象是否为当前被加入到ViewPager容器中的对象
    			return view == object;
    		}
    
    		//以下两个方法是PageAdapter中必须实现的非抽象方法
    		@Override
    		public Object instantiateItem(ViewGroup container, int position) {
    			// 实例化ViewPager容器中指定的position位置须要显示的View对象
    			View view = children.get(position);
    			container.addView(view);
    
    
    			return view;
    		}
    
    		@Override
    		public void destroyItem(ViewGroup container, int position, Object object) {
    			//在ViewPager中移除指定的position位置的View对象
    			container.removeView(children.get(position));
    		}
    	}
    
    }
    


  • 相关阅读:
    Field 'id' doesn't have a default value错误解决方法
    jQuery:详解jQuery中的事件(一)
    Javascript:Javascript数据类型详解
    CSS:CSS样式表及选择器优先级总结
    Javascript:JSON总结
    CSS:CSS使用Tips
    Git:Git初体验——Git安装配置
    CSS:使用CSS媒体查询创建响应式布局
    多人操作sqlite3数据库冲突问题解决方法
    c++获取sqlite3数据库表中所有字段的方法
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7053509.html
Copyright © 2011-2022 走看看