果然,还是项目驱动的学习方式比较有趣呢。

这周的学习全部围绕着选项卡,也就是tab。

用到了好多知识点,都不知道从哪里开始啦(≧o≦*)。

选项卡的制作有很多方法。选项菜单可以用普通的TextView,也可以直接上button。我选择的是TextView,可能更接近网页的思路吧。

先列个清单出来:

  1. selector

  2. Fragment

  3. ViewPager

布局嘛,网上有一堆,就不提了。

1.selector

选项卡的功能,就是按不同的按钮就能切换到不同页面。作为反馈,按钮总得有点变化,比如换个颜色。实现思路很简单,点击之后换个图标就好了嘛。嗯~o(* ̄▽ ̄*)o,然而在onClick上折腾半天之后,我打开了百度,很快发现了selector这个标签。

Σヽ(Д ; )居然还有这种操作!

selector用起来很简单,写在drawable目录下:

for_tab1.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/ic_news_act" android:state_selected="true" />    <item android:drawable="@drawable/ic_news" /></selector>

ic_news和ic_news_act是通过new->Image Asset导入的图标,自动生成各种规格,免去了手动处理图片大小的麻烦。和.9图应该是一样的效果吧(.9图?我没做,我不懂)。

接着在主界面的TextView写上这句话:

    android:drawableTop="@drawable/for_tab1"

完工!

改变item标签内的属性名(比如color),就可以改变其他效果。

2.Fragment

    接着就是内容匹配。每个选项卡对应一个内容,一个内容就是一个Fragment。

android中一个页面可以看作一个Activity,而Fragment只是”碎片“,生命周期不会长于所存在的Activity。查看配置文件AndroidManifest.xml可以发现,Fragment是没有注册的。

最简单的Fragment,就是重写onCreatView:

View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view =  inflater.inflate(R.layout., container, );view;}

这时冒出了个inflater!你是谁?inflater说我只是个控制器,连接视图和模型。啊~虽然没有明白,但我暂时放过你,小心点inflater,我会盯着你的!

    


3.ViewPager

    铛~铛~铛~

    ViewPager来了!快让开!

诶,Fragment好像没讲完啊?没办法呀,Fragment没人(activity)权啊,只能靠主子(activity)接济过活╮(╯3╰)╭。ViewPager就是从Activity派来的走狗,啊呸,使者!

1) ViewPager可说是这个选项卡的核心。每个Fragment是选项卡显示的内容,ViewPager像是内容的容器,同时担任调度的工作。

布局里的ViewPager看起来就是个普通的标签,但是人家上头有人!

ViewPager需要一个FragmentAdapter才能工作。

这是个超简单的实现:

tabFragmentAdapter FragmentPagerAdapter {ArrayList<Fragment>  ;=;tabFragmentAdapter(FragmentManager fm, ArrayList<Fragment> list){(fm);.= list;}Fragment getItem(position) {.get(position);}getCount() {;}
}

入口在主界面的Java类中:

 fa = (getSupportFragmentManager(), );
.setAdapter(fa);

fg是填入了所有Fragment的ArrayList。

getSupperFragmentManager()取到了主界面的FragmentManager。

vp是用id获取的布局中的ViewPager。

在tab所在的主界面的Java类的onCreate()中运行,就绑定好了这些Fragment。

2)Listener人呢?给tab们绑定好事件就该你上场了

tabListener View.OnClickListener {= ;tabListener(index) {.= index;}onClick(View v) {.setCurrentItem();clearSelect();.get().setSelected();}
}

index是区分tab的编号;

clearSelect是将tab卡片选择状态重置(用setSelected(false));

tabList里装的是作为tab按钮的TextView;

绑定事件应该会,,,吧?

(i = ; i < .size(); i++) {.get(i).setOnClickListener(tabListener(i));
}

似乎很简单,但是我不会告诉你,有一半时间花在了调空指针的BUG!

转载于:https://blog.51cto.com/gzq2017/1927812

【笔记】与Android选项卡一周相关推荐

  1. 一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

    一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法 参考文章: (1)一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法 (2)https://www.cnbl ...

  2. Android获取一周每一天的日期

    项目终于完事了,这几天挺闲的,想着写点东西,把项目中遇到的问题和解决方法总结一下.Android获取一周每一天的日期,就是给出这周某一天的日期计算出这周每一天的日期. 这里,我们把给的这一天设为dat ...

  3. android 选项卡的实现

    转载:https://blog.csdn.net/itachi85/article/details/50412332 前言 此前我们用HorizontalScrollView也实现了类似网易选项卡动态 ...

  4. android自定义排班,Android实现一周时间早中晚排班表

    我们要做一个可以动态添加,修改一周早中晚时间排班表,需求图如下: 上传数据格式: {"friday_plan":"0,1,2","monday_pla ...

  5. [安卓开发笔记二]android Studio通过jni调用C++代码

    [安卓开发笔记二]android Studio通过jni调用C++代码 16/12/11 更新 此博客基于安卓android studio 1.5所写,现在已经有了android studio2.2的 ...

  6. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  7. [安卓开发笔记一]Android开发配置opencv环境超详细教程

    [安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...

  8. (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏

    目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...

  9. (AS笔记)Android全透明沉浸式主题样式——代码篇

    目录 1.前言 2.Android当前SDK版本号 > API 19-Android 4.4 3.Android当前SDK版本号 > API 21-Android 5.0 4.扩展知识点 ...

最新文章

  1. 2014 ecb,_it’s_easy_as_123(修改bmp文件头) 攻防世界;
  2. 八十六、Spring Cloud Consul:服务治理与配置中心
  3. KVC(Key-Value-Coding)和KVO(Key-Value-Observer)
  4. 吴恩达机器学习总结四:Octave语法
  5. 平均年薪 70 万!刚刚,这类程序员又涨薪了!佩服!
  6. sudo echo x **.** 时 base: : Permission denied
  7. 带你玩转Visual Studio——带你高效开发
  8. ISO8601时间格式转换为Date
  9. ThinkPHP6敏捷后台开发框架
  10. 鸿蒙系统PC具体配置要求,原神pc电脑配置多少 原神游戏最低配置一览
  11. 边缘计算研究热点地图
  12. 从阿里离职10天后,疯狂投简历面了4家公司,我的感受——不可名状的痛
  13. H3C模拟器中文路径问题(提示:“当前系统用户名中包含非ASCII字符”! )方法尝试:
  14. QT自定义控件之车辆远近光灯
  15. 妇幼保健学习知识资料考试题及其规范标准答案
  16. 第九章第八题(Fan类)(Fan class)
  17. Git 安装及使用指南
  18. android车载信息娱乐系统,基于Android的车载娱乐信息系统
  19. moxa服务器udp协议设定,Moxa Nport串口服务器漏洞全球统计报告(Moxa Nport Vulnerability Global Census Report)...
  20. qfile超过下载文件容量_如何下载视频网站上的视频,这里有方法

热门文章

  1. 比较不错的一个ios找茬游戏源码
  2. 实例说明扩展JQuery方式
  3. 大学最后一个学期了,感觉没对头。。。
  4. c 自动生成html报告,Pytest框架之 - Allure生成漂亮的HTML图形测试报告
  5. Linux-鸟菜-7-Linux文件系统-EXT
  6. POJ3122贪心或者二分(分蛋糕)
  7. C语言经典例30-判断回文数
  8. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 1 的傅里叶变换 )
  9. 【报错信息】Google Play 上架报错 ( Your app contains ads that do not comply with our Families ad | 退出亲子同乐计划 )
  10. 【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )