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.
public View inflate(int resource, ViewGroup root) {    return inflate(resource, root, root != null);}
然后是给ViewPager设置adapter

(二)添加标题---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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 车的电脑板坏了怎么办 饭卡消磁了怎么办妙招 有好项目没资金怎么办 买的股票涨停了怎么办 考研没过国家线怎么办 中石化的油卡怎么办 5173号被找回了怎么办 谭木匠梳子断了怎么办 198地块上的企业怎么办 天猫投诉不成立怎么办 顾客老嫌瓷砖贵怎么办 公司的公章丢了怎么办 物业不给充电费怎么办 怎么办社保卡去哪里办 单位没给社保卡怎么办 诈骗链接点开了怎么办 私人老板拖欠工资不给怎么办 辞职了工资不发怎么办 老板欠工资不给怎么办 投资平台跑路了怎么办 眼镜太松往下滑怎么办 塑胶水管管断了怎么办 淘宝排名靠后了怎么办 我有古董想出售怎么办 被拍卖公司骗了怎么办 苹果4s铃声太小怎么办 新号码注册微信怎么办 uc不能下种子了怎么办 刚出生的小牛喘怎么办 回奶之后有硬块怎么办 回奶第十天硬块怎么办 断奶期间乳房有硬块怎么办 断奶后乳房有肿块怎么办 北京一证通到期怎么办 没做过后勤的人怎么办 别样app被税了怎么办 人肉代购被税了怎么办 网易考拉被税了怎么办 家住乐清被税了怎么办 糖耐结果高了怎么办 35岁之后死档案怎么办