关于Android导航页开发的体会

关于Android导航页开发的体会2019独角兽企业重金招聘Python工程师标准>>>…

大家好,又见面了,我是你们的朋友全栈君。

最近尝试做一个有社交网络服务和IM服务的项目,想使用比较流行的方式实现程序的导航,一开始

借鉴了网上的DrawerLayout加ViewPager的模式,但始终觉得界面不够直观,于是改变想法,采用

了底部大类导航栏加顶端Tab小类导航加ViewPager的导航模式,有点像微信的导航模式(某种程度上来

说有完全不像,笑),主要涉及到ViewPager,Fragment,FragmentPagerAdapter,由于网上例子

很多,主要写一些体会

 

程序界面:

关于Android导航页开发的体会

大类实现(我把底端的导航称为大类)

采用一组RadioGroup,在onCheckedChanged方法中给出Fragment的切换规则

使用selector为RadioButton设置触发时的响应

Fragment内容填充的一个FrameLayout布局中(注意设置layout_weight以保证占满屏幕)

中间的分割线可以考虑通过ImageView来实现(设置高度1dp,background为灰)

 

小类下的细分(使用ViewPager+FragmentPagerAdapter实现)

顶端的两个Tab可以考虑使用TextView+绘制滑动条来实现

重写FragmentPagerAdapter:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> fragmentsList; public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) { super(fm); this.fragmentsList = fragments; } @Override public int getCount() { return fragmentsList.size(); } @Override public Fragment getItem(int arg0) { return fragmentsList.get(arg0); } @Override public int getItemPosition(Object object) { return super.getItemPosition(object); } }

在setAdapter时注意使用getChildFragmentManager,因为如果在Fragment中嵌套Fragment,要用

getChildFragmentManager

例子:

mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), fragmentsList));

 

重写OnPagerChangeListener

转载于:https://my.oschina.net/sikilao/blog/376249

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139170.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python多线程与多线程中join()的用法

    Python多线程与多线程中join()的用法Python多线程与多进程中join()方法的效果是相同的。下面仅以多线程为例:首先需要明确几个概念:知识点一:当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多

    2022年7月3日
    24
  • zigbee协议栈 任务、事件与轮询机制

    zigbee协议栈 任务、事件与轮询机制typedefunsignedcharuint8  只占一个字节,即二进制的8位,0b00000000,16进制的两位0x00;typedefunsignedshortuint16只占两个字节,即二进制的16位,0b0000000000000000,16进制的四位0x0000 协议栈中有三个变量至关重要:l tasksCnt保存了任务的总个数uint8ta

    2022年5月27日
    36
  • .NET面试题「建议收藏」

    .NET面试题「建议收藏」1. 简述 private、 protected、 public、 internal 修饰符的访问权限。答 .private

    2022年7月1日
    23
  • 通信加密算法

    通信加密算法1.加密算法分类加密算法通常分为对称性加密算法和非对称性加密算法。对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。非对称算法与之不同,发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密…

    2022年5月24日
    77
  • Ubuntu18.04.3虚拟机安装步骤(图文教程,非常详细!!!)

    Ubuntu18.04.3虚拟机安装步骤(图文教程,非常详细!!!)原创:丶无殇2019-9-6虚拟机的安装步骤就不教学了!自行百度!接下来教学ubuntu18.04.3desktop_amd64版本的安装和配置教程软件下载地址详细介绍:http://bencky.ml/linux下载速度很快:25MB/s左右一、ubuntu安装教…

    2022年4月6日
    128
  • -bash: ifconfig: command not found[通俗易懂]

    -bash: ifconfig: command not found[通俗易懂]执行命令:ifconfig错误截图:解决方案:1.运行命令:sudoyuminstallnet-tools2.根据提示输入y3.根据提示再次输入y看到Complete!就OK了测试:再次执行命令:ifconfig好了问题成功解决!…

    2025年5月30日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号