【笔记】与Android选项卡一周
果然,还是项目驱动的学习方式比较有趣呢。
这周的学习全部围绕着选项卡,也就是tab。
用到了好多知识点,都不知道从哪里开始啦(≧o≦*)。
选项卡的制作有很多方法。选项菜单可以用普通的TextView,也可以直接上button。我选择的是TextView,可能更接近网页的思路吧。
先列个清单出来:
selector
Fragment
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选项卡一周相关推荐
- 一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法
一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法 参考文章: (1)一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法 (2)https://www.cnbl ...
- Android获取一周每一天的日期
项目终于完事了,这几天挺闲的,想着写点东西,把项目中遇到的问题和解决方法总结一下.Android获取一周每一天的日期,就是给出这周某一天的日期计算出这周每一天的日期. 这里,我们把给的这一天设为dat ...
- android 选项卡的实现
转载:https://blog.csdn.net/itachi85/article/details/50412332 前言 此前我们用HorizontalScrollView也实现了类似网易选项卡动态 ...
- android自定义排班,Android实现一周时间早中晚排班表
我们要做一个可以动态添加,修改一周早中晚时间排班表,需求图如下: 上传数据格式: {"friday_plan":"0,1,2","monday_pla ...
- [安卓开发笔记二]android Studio通过jni调用C++代码
[安卓开发笔记二]android Studio通过jni调用C++代码 16/12/11 更新 此博客基于安卓android studio 1.5所写,现在已经有了android studio2.2的 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- [安卓开发笔记一]Android开发配置opencv环境超详细教程
[安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...
- (AS笔记)Android全透明沉浸式主题样式——顶部状态栏+底部导航栏
目录 1.前言 2.自定义主题theme 3.全透明沉浸式主题theme 4.设置状态栏颜色(Android 5.0+) 5.设置状态栏半透明 6.设置状态栏全透明 7.设置底部导航栏半透明 8.全透 ...
- (AS笔记)Android全透明沉浸式主题样式——代码篇
目录 1.前言 2.Android当前SDK版本号 > API 19-Android 4.4 3.Android当前SDK版本号 > API 21-Android 5.0 4.扩展知识点 ...
最新文章
- 2014 ecb,_it’s_easy_as_123(修改bmp文件头) 攻防世界;
- 八十六、Spring Cloud Consul:服务治理与配置中心
- KVC(Key-Value-Coding)和KVO(Key-Value-Observer)
- 吴恩达机器学习总结四:Octave语法
- 平均年薪 70 万!刚刚,这类程序员又涨薪了!佩服!
- sudo echo x **.** 时 base: : Permission denied
- 带你玩转Visual Studio——带你高效开发
- ISO8601时间格式转换为Date
- ThinkPHP6敏捷后台开发框架
- 鸿蒙系统PC具体配置要求,原神pc电脑配置多少 原神游戏最低配置一览
- 边缘计算研究热点地图
- 从阿里离职10天后,疯狂投简历面了4家公司,我的感受——不可名状的痛
- H3C模拟器中文路径问题(提示:“当前系统用户名中包含非ASCII字符”! )方法尝试:
- QT自定义控件之车辆远近光灯
- 妇幼保健学习知识资料考试题及其规范标准答案
- 第九章第八题(Fan类)(Fan class)
- Git 安装及使用指南
- android车载信息娱乐系统,基于Android的车载娱乐信息系统
- moxa服务器udp协议设定,Moxa Nport串口服务器漏洞全球统计报告(Moxa Nport Vulnerability Global Census Report)...
- qfile超过下载文件容量_如何下载视频网站上的视频,这里有方法
热门文章
- 比较不错的一个ios找茬游戏源码
- 实例说明扩展JQuery方式
- 大学最后一个学期了,感觉没对头。。。
- c 自动生成html报告,Pytest框架之 - Allure生成漂亮的HTML图形测试报告
- Linux-鸟菜-7-Linux文件系统-EXT
- POJ3122贪心或者二分(分蛋糕)
- C语言经典例30-判断回文数
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 1 的傅里叶变换 )
- 【报错信息】Google Play 上架报错 ( Your app contains ads that do not comply with our Families ad | 退出亲子同乐计划 )
- 【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )