1-VVI-材料设计之-TabLayout上标签
[1].既然ViewPager和Fragment都总结完了,那就插一个材料设计中的TabLayout控件吧,这三者关系挺好
[2].TabLayout在上面就是曾经的ViewPager指示器,想当年都是自己封装来用,现在条件好了,安卓给了。
[3].引入包:implementation 'com.android.support:design:26.1.0'
[4].在此之前,你应该知道ViewPager和Fragment的组合使用,如果不清楚,可以看一下:Fragment与ViewPager结合
1.Activity的布局
<android.support.design.widget.TabLayout android:id="@+id/tl_tab" android:layout_width="match_parent" android:layout_height="@dimen/dp_48" android:background="@color/colorPrimary"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp_content" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager>
2.Fragment:使用了我的封装类,详情可见:Fragment简单封装
public class V01_ContentV4Fragment extends BaseV4Fragment { /** * * @param str Activity向Fragment的数据 * @return ViewPagerFragment对象 */ public static V01_ContentV4Fragment newInstance(String str) { Bundle arguments = new Bundle(); arguments.putString("name_data", str); V01_ContentV4Fragment instance = new V01_ContentV4Fragment(); instance.setArguments(arguments); return instance; } @Override protected void render(View rootView) { String name = getArguments().getString("name_data"); setTextView(R.id.tv_content, name); } @Override protected int setLayoutId() { return R.layout.fg_v01_tab_content; } }
3.Activity
public class V01_TopActivity extends AppCompatActivity { private TabLayout mTabTl; private ViewPager mContentVp; private List<String> tabDatas; private List<Fragment> tabFragments; private FragmentPagerAdapter contentAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a01_top); mTabTl = findViewById(R.id.tl_tab); mContentVp = findViewById(R.id.vp_content); initFragment(); initTab(); } private void initTab() { //MODE_FIXED:均匀分布,排不下挤一挤 //MODE_SCROLLABLE:可以滑动,从左向右排 mTabTl.setTabMode(TabLayout.MODE_SCROLLABLE); mTabTl.setBackgroundColor(Color.GRAY); //设置颜色:(未选中的,选中的) mTabTl.setTabTextColors(Color.BLACK, Color.WHITE); //设置指示器的颜色 mTabTl.setSelectedTabIndicatorColor(Color.BLUE); //设置底线高 mTabTl.setSelectedTabIndicatorHeight(5); //设置阴影 ViewCompat.setElevation(mTabTl, 10); //TabLayout设置mContentVp mTabTl.setupWithViewPager(mContentVp); } private void initFragment() { //随机产生4个名字 tabDatas = DataUtils.getRandomName(4, true); //承载Fragment的集合 tabFragments = new ArrayList<>(); for (String name : tabDatas) { tabFragments.add(V01_ContentV4Fragment.newInstance(name)); } //创建适配器对象 contentAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return tabFragments.get(position); } @Override public int getCount() { return tabDatas.size(); } @Override public CharSequence getPageTitle(int position) { return tabDatas.get(position); } }; //为ViewPager设置适配器 mContentVp.setAdapter(contentAdapter); } //菜单栏点击 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_tab_layout, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.tab_add: //创建随机名字 String addName = ZRandom.randomCnName(); //标签集合增加 tabDatas.add(addName); //Fragment集合增加 tabFragments.add(V01_ContentV4Fragment.newInstance(addName)); //刷新, contentAdapter.notifyDataSetChanged(); mTabTl.setupWithViewPager(mContentVp); return true; case R.id.tab_mode_fixed: mTabTl.setTabMode(TabLayout.MODE_FIXED); return true; case R.id.tab_mode_scrollable: mTabTl.setTabMode(TabLayout.MODE_SCROLLABLE); break; } return super.onOptionsItemSelected(item); } }
后记、
1.声明:
[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328
4.欢迎关注我的微信公众号,最新精彩文章,及时送达:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5-AVI--Fragment简单封装
零、前言 [1].每次写Fragment要加载布局,为布局设置内容,挺麻烦的,搞个基类简单封装一下吧 [2].一般封装基类使用模板方法设计模式,基类中做一些常用的不变东西,需要拐点弯的逻辑就弄个抽象方法延迟到子类 [3].textView设置文字,ImageView设置图片两个经常用的方法也提供一下 Fragment封装.png 一、代码实现 1.使用:EVAFragment继承 public class EVAFragment extends BaseFragment { @Override protected void render(View rootView) { setTextView(R.id.f_tv_title, "封装Fragment"). setImageView(R.id.f_iv_back, R.mipmap.ic_launcher); } @Override protected int setLayoutId() { return R.layout.fragment_title; } } 2.Activity getFragmentManager().begin...
- 下一篇
js控制ios设备在微信打开网页时,自动播放音乐
实际情形: 今天在公司做一个微页的项目,涉及到在微信里面点击链接或者是扫描二维码,打开链接的时候,自动播放音乐。 这个功能是非常简单的,直接在HTML页面插入如下代码即可。 <audio src="1.mp3" autoplay="autoplay" controls></audio> 如果使用安卓手机进行访问页面的话,是没有什么错误的,音乐能正常自动播放。但是如果是使用ios设备访问页面的话,音乐是不能自动播放的。 原来是苹果公司考虑到用户可能是用手机流量访问的情况,为了用户流量着想,所以需要用户交互后才能播放。 但是我的这个项目要求网页,必须自动进行播放音乐,于是便有了下面的解决办法。 解决办法: 首先,我们要给页面中的<audio>标签添加一个id="bg-music"。因为我们要在后面的js代码中,使用这个id="bg-music"获取到<audio>标签 <audio id="bg-music" src="1.mp3" autoplay="autoplay" controls></audio> 然后,我们...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境