界面底部Tab实现
现在基本上大部分的手机APP都要实现底部Tab,底部实现Tab的实现方式有很多种,那么有没有好的实现方式呢?
今天我将使用一个开源插件来实现底部Tab
参考自zhangli_的博客:http://blog.csdn.net/zhangli_/article/details/52604699
效果图(大家如果有制作gif的好方法可以推荐给我)
实现步骤如下:
1.添加依赖
2.在布局文件中添加tab容器
3.初始化UI
4.添加tab控制代码
1.添加依赖
compile ‘me.majiajie:pager-bottom-tab-strip:1.0.0’
2.在布局文件中添加tab容器
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainTestActivity"> <me.majiajie.pagerbottomtabstrip.PagerBottomTabLayout
android:id="@+id/boom_layout"
app:elevation="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/> <FrameLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/boom_layout" /> </RelativeLayout>
3.初始化UI
private void initView() {
mHomePageFragment = HomePageFragment.newInstance();
mMePageFragment = MePageFragment.newInstance();
fragments = new Fragment[]{mHomePageFragment, mMePageFragment};
// 将fragment添加到framlayout中,并显示第一个fragment
getSupportFragmentManager().beginTransaction()
.add(R.id.main_content, mHomePageFragment, mHomePageFragment.getClass().getName())
.add(R.id.main_content, mMePageFragment, mMePageFragment.getClass().getName()).commit();
//初始化底部导航栏
PagerBottomTabLayout mBottomTabLayout = (PagerBottomTabLayout) findViewById(R.id.boom_layout);
//构建导航栏,得到Controller进行后续控制
mTabController = mBottomTabLayout.builder()
.addTabItem(R.drawable.ic_menu_home, "首页", getResources().getColor(R.color.lightblue))
.addTabItem(R.drawable.ic_menu_me, "我", getResources().getColor(R.color.lightblue))
.setMode(TabLayoutMode.HIDE_TEXT | TabLayoutMode.CHANGE_BACKGROUND_COLOR)
.setDefaultColor(getResources().getColor(R.color.black))
.build();
}
4.添加tab控制代码
private void setOnClickListeners() {
mTabController.addTabItemClickListener(new OnTabItemSelectListener() {
@Override
public void onSelected(int index, Object tag) {
FragmentTransaction trx = getSupportFragmentManager().beginTransaction();
trx.hide(mHomePageFragment).hide(mMePageFragment);
if (!fragments[index].isAdded()) {
trx.add(R.id.main_content, fragments[index]);
}
trx.show(fragments[index]).commitAllowingStateLoss();
}
@Override
public void onRepeatClick(int index, Object tag) {
}
});
}
初始化UI和Tab控制的函数在Activity中调用就可以了
这样我们就生成了我们的底部Tab导航栏啦!!!
界面底部Tab实现的更多相关文章
- Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换
一.问题描述 在上次博文中,我们使用RadioGroup+ViewPage+Fragmen实现了顶部滑动导航(查看文章:http://www.cnblogs.com/jerehedu/p/460759 ...
- Android自定义控件----RadioGroup实现APP首页底部Tab的切换
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- ActivityGroup+LinearLayout实现iphone风格的底部tab菜单
public class ActsGroup extends ActivityGroup { private LinearLayout bodyView; private Line ...
- Android Studio精彩案例(二)《仿微信动态点击底部tab切换Fragment》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 现在很多的App要么顶部带有tab,要么就底部带有tab.用户通过点击tab从而切换不同的页面(大部分情况时去切换fragment). ...
- Vue(小案例)底部tab栏和顶部title栏的实现
---恢复内容开始--- 一.前言 1.底部tab栏实现 2.顶部title栏实现 二.主要内容 1.底部tab栏实现(将底部导航提取到公共的组件中) 具体效果:当点击切换不同的tab的时候,对应 ...
- Xamarin.Forms 学习系列之底部tab
App中一般都会有一个底部tab,用于切换不同的功能,在Xamarin中应该制作底部tab了,需要把Android的TabbedPage做一次渲染,IOS的则不用,接下来说下详细步骤: 1.在共享项目 ...
- 自定义 简单 底部tab
项目地址:https://gitee.com/jielov/music-netease-api.git 先创建三个页面 分别为 home.vue , classify.vue, my.vue . 以下 ...
- Android应用主界面底部菜单实现
介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的 <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fr ...
- 点击菜单选项,右侧主体区新增子界面(Tab)的实现
今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...
随机推荐
- Eclipse使用Maven创建Web项目+整合SSM框架
一.准备环境: maven:apache-maven-3.2.3 jdk:jdk1.8.0_25 tomcat:tomcat-9.0 二.配置Maven.jdk 1.Window——>Prefe ...
- C#编写代码:求三个数中的最大数
static void Main(string[] args) { float x, y, z, temp; Console.Write(&q ...
- Linux+Nginx+Asp.net Core部署
上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...
- 隐性URL与显性URL区别与SEO考虑
隐性URL与显性URL经常在实现页面跳转的时候用到,这两种方式有什么区别,各自对SEO有什么影响?看一下阿里云的官方文档解释: 显性URL转发: 例如: http://b.com/ 指向 http:/ ...
- Linux学习之Vim使用
一 为何要学Vim 所有的Unix Like系统都有自带vi编辑器 一些软件的编辑接口会自动调起vi 作为vi的升级版,vim具有程序编辑功能,而且具有代码颜色高亮显示.辨别代码的正确性等功能 以上优 ...
- java 反射与常用用法
java通常是先有类再有对象,有对象我就可以调用方法或者属性. 反射其实是通过Class对象来调用类里面的方法.通过反射可以调用私有方法和私有属性.大部分框架都是运用反射原理. 如何获得Class对象 ...
- redux核心思路和代码解析
最近在公司内部培训的时候,发现很多小伙伴只是会用redux.react-redux.redux-thunk的api,对于其中的实现原理和数据真正的流向不是特别的清楚,知其然,也要知其所以然,其实red ...
- bootstrap file input 官方文档翻译
file Input官方文档 中文翻译 file input 特性 1.这个插件会把简单的html文件变成一个更好用的文件选择输入控件,通过一个html的文件输入框,能兼容那些不支持jquery或js ...
- spring学习起步
1.搭载环境 去spring官网下载这几个包,其中commons-logging-1.2.jar是一个日志包,是spring所依赖的包,可以到apache官网上下载 也可以访问http://downl ...
- Java的标识符,数据类型与各种运算符
一.标识符 用作给变量.类和方法命名 java强调标识符有如下命名规则: 标识符必须以字母,下划线_,美元$开头 标识符其他部分可以是字母,下划线"_",美元符"$&qu ...
