viewpager学习笔记
来源:互联网 发布:贵州省大数据局 编辑:程序博客网 时间:2024/05/16 14:34
首先在layout里写viewpager
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" />然后编写3个layout分别lay1,lay2,lay3,3个layout设置背景不同,不做其他修改,
贴上MainActivity的代码,逐步分析,
public class MainActivity extends AppCompatActivity { private View lay1,lay2,lay3; private ViewPager viewpager; private List<View>listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewpager=(ViewPager)findViewById(R.id.viewpager); LayoutInflater inflater=getLayoutInflater(); lay1=inflater.inflate(R.layout.layout1,null); lay2=inflater.inflate(R.layout.layout2,null); lay3=inflater.inflate(R.layout.layout3,null); listview=new ArrayList<View>(); listview.add(lay1); listview.add(lay2); listview.add(lay3); PagerAdapter adapter=new PagerAdapter() { @Override public int getCount() { return listview.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(listview.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(listview.get(position)); return listview.get(position); } }; viewpager.setAdapter(adapter); }}首先,对3个layout使用了View来定义,因为View是Layout的父类的父类,
并且LayoutInflater.inflater返回值为View
Inflate a new view hierarchy from the specified xml resource. Throws
*{@link InflateException} if there is an error.
然后是给ViewPager设置adapterpublic View inflate(int resource, ViewGroup root) { return inflate(resource, root, root != null);}
(二)添加标题---PagerTitleStrip与PagerTabStrip
PagerTabStrip:
layout.xml:
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content"> <android.support.v4.view.PagerTabStrip android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" /></android.support.v4.view.ViewPager>MainActivity:
public class MainActivity extends AppCompatActivity { private ViewPager viewpager; private View lay1,lay2,lay3; private List<View>list; private List<String>title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewpager=(ViewPager)findViewById(R.id.viewpager); LayoutInflater inflater=getLayoutInflater(); lay1=inflater.inflate(R.layout.layout1,null); lay2=inflater.inflate(R.layout.layout2,null); lay3=inflater.inflate(R.layout.layout3,null); list=new ArrayList<View>(); list.add(lay1); list.add(lay2); list.add(lay3); title=new ArrayList<String>(); title.add("xiaoming"); title.add("xiaohong"); title.add("xiaofang"); PagerAdapter myadapter=new PagerAdapter() { @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position)); return list.get(position); } @Override public CharSequence getPageTitle(int position) { return title.get(position); } }; viewpager.setAdapter(myadapter); }}主要是添加一个一个list,还有就是在适配器中添加一个getPageTitle方法
PagerTitleStrip与PagerTabStrip差不多,只是在layout里面的不同,
PagerTitleStrip与PagerTabStrip的不同点:
1.PagerTabStrip的标题下面有下划线来提醒指向哪个Tab
2.PagerTitleStrip没有与用户交互的功能而PagerTabStrip则有,具体是点击上面的Tab可以转换到具体的那个layout
扩展:
1.改变下划线的颜色
PagerTabStrip pagerTabStrip;pagerTabStrip = (PagerTabStrip) findViewById(R.id.title);pagerTabStrip.setTabIndicatorColorResource(Color.green);
需要在values下的colors.xml文件里加上
<color name="green">#00ff00</color>
同时也发现了Color.GREEN是一种颜色而自定义的color.green属于一种id资源,这里容易混淆
2.添加标题——重写适配器CharSequence getPageTitle(int)方法
public CharSequence getPageTitle(int position) { SpannableStringBuilder ssb = new SpannableStringBuilder(" "+title.get(position)); // space added before text // for Drawable myDrawable = getResources().getDrawable( R.drawable.ic_launcher); myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight()); ImageSpan span = new ImageSpan(myDrawable, ImageSpan.ALIGN_BASELINE); ForegroundColorSpan fcs = new ForegroundColorSpan(Color.GREEN);// 字体颜色设置为绿色 ssb.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);// 设置图标 ssb.setSpan(fcs, 1, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);// 设置字体颜色 ssb.setSpan(new RelativeSizeSpan(1.2f), 1, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return ssb;}
0 0
- ViewPager学习笔记
- viewpager+fragment学习笔记
- 学习笔记之ViewPager
- viewpager学习笔记
- 温故知新-ViewPager学习笔记
- Android的 ViewPager 学习笔记
- Android的 ViewPager 学习笔记
- android ViewPager学习笔记1
- android ViewPager学习笔记3
- android 控件学习笔记 --------ViewPager
- Andorid学习笔记 12 ViewPager
- 安卓学习笔记之ViewPager
- ViewPager和Fragment学习笔记(1)
- [学习笔记]用户界面优化之Android ViewPager
- 安卓学习笔记之ViewPager
- ViewPager切换页面——学习笔记
- ViewPager 笔记
- Viewpager笔记
- Java序列化与反序列化
- Java集合排序总结
- hdu5316 Magician (线段树+单点更新+区间查询+区间合并)
- Android的进程与线程
- Leetcode: N-Queens II
- viewpager学习笔记
- 缩小图片的像素减少内存压力
- CodeIgniter框架目录结构分析
- VMware中archlinux开机遇到a start job is runing for sys-subsystem-net-device-VMnet8问题与不能联网问题
- Struts2框架运行机制
- protobuf安装配置和编译成java文件教程(for mac)
- java21个知识点重点
- url中文参数丢失或乱码解决方法
- 如何设计更好的在线教育直播推流方案