Fragment+Tablayout + BottomTabBar双导航栏实现

仿网易上下双导航简单实现 立即下载

https://mp.youkuaiyun.com/postedit

点击打开链接.可以打赏一下或者加个关注

 

    //底部导航
    compile 'com.hjm:BottomTabBar:1.1.1'
    //tablayout
    implementation 'com.android.support:design:26.+'
    compile 'com.android.support:support-v4:26.+'

 

 //控件布局(布局是在实现底部导航栏的类布局里)

 

 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.month1.MainActivity">

    <com.hjm.bottomtabbar.BottomTabBar
        android:id="@+id/bottom_tab_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </com.hjm.bottomtabbar.BottomTabBar>

</LinearLayout>
//Tablayout布局是放在实现顶部导航栏类的布局(暂定为A,下面有代码)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
 >
 <android.support.design.widget.TabLayout
     android:id="@+id/tablayout"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" />

 <android.support.v4.view.ViewPager
     android:id="@+id/viewpager"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="1">
 </android.support.v4.view.ViewPager>
</LinearLayout>
//框架布局就是这样了,然后是代码操作,在这里我做的是抽取基类的操作
 //抽取的是Activity的基类

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by lenovo on 2018/4/25.
 */

public abstract class BaseActivity<T> extends AppCompatActivity {
    public T persenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(getViewID());
        persenter = getPersenter();
        initView();
        initData();

    }

    protected abstract int getViewID();
    protected abstract void initView();
    protected abstract void initData();
    protected abstract T getPersenter();
}

//抽取Fragment的基类

 


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
 * Created by lenovo on 2018/4/25.
 */

public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getContext()).inflate(getLayoutID(),container,false);
        initView(view);
        initData();
        return view;

    }
    protected abstract int getLayoutID();
    protected abstract void initView(View view);
    protected abstract void initData();
}

 

//基类抽取完成后先看MainActivity类

 



public class MainActivity extends BaseActivity{
    //得到底部导航的控件并操作
    private BottomTabBar bottomTabBar;

    @Override
    protected int getViewID() {
          return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        bottomTabBar= findViewById(R.id.bottom_tab_bar);
    }


    @Override
    protected Object getPersenter() {
        return null;
    }


    @Override
    protected void initData() {
        bottomTabBar.init(getSupportFragmentManager())
                .setImgSize(50,50)
                .setFontSize(8)
                .setTabPadding(4,6,10)
                .setChangeColor(Color.RED, Color.DKGRAY)
                //fragment看下面的模板
                .addTabItem("首页",R.mipmap.a, OneFragment.class)
                .addTabItem("优惠",R.mipmap.b, TwoFragment.class)
                .addTabItem("分类",R.mipmap.c, TreeFragment.class)
                .addTabItem("我的",R.mipmap.d, ForFragment.class)
                .isShowDivider(false)
                .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
                    @Override
                    public void onTabChange(int position, String name) {

                    }
                });
    }




}

//实现底部导航的布局就完成了(Fragment类大家就给大家一个模板,其他的Fragment类也一下),同时也实现了顶部导航

public class OneFragment extends BaseFragment {


    private String[] titles = {"页面1", "页面2"};
    private TabLayout tablayout;
    private ViewPager viewpager;
    private List<Fragment> fragments;
    private MyAdapter adapter;

    @Override
    protected int getLayoutID() {
        return R.layout.layout_one;
    }

    @Override
    protected void initView(View view) {
        tablayout = view.findViewById(R.id.tablayout);
        viewpager = view.findViewById(R.id.viewpager);
        //页面,数据源
        fragments = new ArrayList<>();
        fragments.add(new OneFragment1());
        fragments.add(new OneFragment2());
         //ViewPager的适配器
        adapter = new MyAdapter(getActivity().getSupportFragmentManager());
        viewpager.setAdapter(adapter);
        //绑定
        tablayout.setupWithViewPager(viewpager);

    }

    @Override
    protected void initData() {

    }
       class MyAdapter extends FragmentPagerAdapter {

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return fragments.size();
        }

        //重写这个方法,将设置每个Tab的标题
        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }
    }
}

//顶部航的类

OneFragment1 ,它是在OneFragment中的
public class OneFragment1 extends BaseFragment {
    @Override
    protected int getLayoutID() {
        return R.layout.layoutone1;
    }

    @Override
    protected void initView(View view) {

    }

    @Override
    protected void initData() {

    }
}

 

 

 

 

 

 

 

TabLayout实现仿今日头条顶部tab导航效果 立即下载

相关推荐

头部+底部双导航demo

Android-实现顶部+底部双导航界面功能demo

Android 制作Tab在界面底部(Bottom)的TabLayout布局

今天下午刚写了一篇制作TabLayout的博文: https://blog.csdn.net/zhouyingge1104/article/details/116565656 默认的Tab位置是页面顶端: 现在要求升级,要把Tab放到页面底端,这确实更符合主流,现在很多知名APP的Tab都是在底部的,例如某个应用市场: 网上找到了相对简单的解决方案,只要修改XML: <?xml version="1.0" encoding="utf-8"?> <android.s.

小鹰信息技术服务部 1517

Android实现顶部底部双导航界面功能

主要为大家详细介绍了Android实现顶部底部双导航界面功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

android双导航功能,高级功能-导航组件-开发指南-Android 导航SDK | 高德地图API

导航组件的配置类AmapNaviParams中提供了很多配置方法,支持在启动同时传入,满足自定义需求。启动相关配置如果已经在外部通过AMapNavi计算过一条路线,可以选择启动组件不进行重新算路,使用现有路线进行导航。/*** 启动组件进行直接导航时,设置是否进行算路 (只有在直接跳转导航页的情况下才生效)** @param needCalculateRouteWhenPresent true ...

weixin_39835117的博客 1652

LIN协议栈 AUTOSAR架构下 状态管理

LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

汽车电子从业者,电子爱好者。 2051

Unity中USD场景导入与工业级协作实战指南

USD(Universal Scene Description)是一种面向复杂三维场景的结构化数据模型,其核心在于分层描述、变体管理与非破坏性组合,本质是支持多团队并行协作的场景协议。它不同于传统模型格式,强调运行时可编辑性与版本可控性,技术价值体现在跨软件资产一致性、零拷贝动态叠加及内存中实时合成。典型应用场景包括建筑BIM实时漫游、汽车多配置仿真、影视级灯光材质协同等工业管线。在Unity中,USD已深度集成于URP/HDRP管线,通过原生USD Importer、Runtime与Exporter三组件

weixin_32073537的博客 301

Android典型界面设计(7) ——DrawerLayout+Fragement+ViewPager+PagerTabStrip实现双导航

一、问题描述   在Android典型界面设计(3)的我们实现了双导航效果,即外层底部导航和内部区域的头部导航,如网易新闻等很多应用采用了这种导航,但Google提供DrawerLayout可实现抽屉式导航,建议使用DrawerLayout代替底部导航,下面我们就使用官方提供的DrawerLayout+Fragement+ViewPager+PagerTabStrip实现...

weixin_33708432的博客 213

OpenMMLab实战指南:从环境搭建到首个检测模型运行

本文是一份详细的OpenMMLab实战指南,重点介绍了如何从零开始搭建环境并运行首个目标检测模型。内容涵盖Miniconda环境配置、PyTorch与CUDA版本匹配、使用MIM工具安装MMCV和MMDetection的核心步骤,并通过RTMDet-tiny模型演示了完整的推理流程,帮助开发者高效入门这一计算机视觉开源算法体系。

weixin_28678151的博客 155

Android典型界面设计(8) ——ViewPager+PagerSlidingTabStrip实现双导航

一、问题描述   PagerSlidingTabStrip是android开源项目,指示器控件。官网地址:https://github.com/astuetz/PagerSlidingTabStrip   该组件可和ViewPager结合实现效果不错的滑动式导航,最大特点是滑动条可跟随ViewPager联动,不过PagerSlidingTabStrip只有文字或图片两种...

weixin_33790053的博客 181

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:滴滴打车、滴滴加油、滴滴货运、花小猪打车、高德打车、同程打车 连锁餐饮点餐:肯德基、麦当劳、百果园、奈雪的茶、瑞幸咖啡、星巴克、喜茶、汉堡王、必胜客电影票:特价电影票 注意:以上涉及到需要支付的 CPS 渠道,不需要预存!

qq_41837379的博客 3110

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1076

BottomTabBar+fragment+viewpager

compile 'com.android.support:design:25.3.1' compile 'com.hjm:BottomTabBar:1.1.1' com.hjm.bottomtabbar.BottomTabBar android:layout_width="match_parent" android:layout_height="match_parent"

Chen___tao的博客 406

复制幻灯片到另一个PPT编程

请确保将源PPT文件和目标PPT文件的文件名修改为你实际使用的文件名。运行上述代码后,目标PPT将包含源PPT中的所有幻灯片和形状。这里假设源PPT文件名为"source.pptx",目标PPT文件名为"target.pptx"。方法将每个幻灯片的布局添加到目标PPT中。是一个强大的库,可以用于创建、修改和操作PPT文件。要将一个PPT中的幻灯片复制到另一个PPT,可以使用Python的。这段代码遍历源PPT的每个幻灯片,并使用。步骤 3: 打开源PPT和目标PPT。这将保存修改后的目标PPT文件。

ByteSparkX的博客 1322

BottomTabBar实现底部导航栏

超简单,几行代码搞定Android底部导航栏-----补充 应项目需求以及小伙伴的留言,新加了两个方法: 设置底部导航栏背景图片 添加底部导航栏选项卡切换监听事件 底部导航栏的实现也不难,就是下边是几个Tab切换,上边一般是一个FrameLayout,然后FrameLayout中切换fragment。 网上有不少关于Android底部导航栏的文章,不过好像都只是关于下边Tab切的,没有实现T

TTHHVV的博客 1487

2025年5月架构设计师论文真题回顾,附写作技巧、所涉知识点及参考范文(三)

本文主要回顾2025年上半年(2025-5-24)系统架构设计师考试下午论文的题目,同时附带写作技巧、所涉知识点及参考范文。试题三:多模型数据库及应用。

一几文的编程学习笔记。 630

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

在 pooling 方法上,我们也尝试过不同层 pooling,或者在多层上增加 attention 聚合 BERT 多层结果,效果和最后一层所有 token 做 average pooling 相当。损失函数方面,在排序阶段使用pairwise比 pointwise 损失函数的效果会更好。

丨汀、的博客 1109

侧栏,底部导航,选项卡(未整理,有点乱)

本文需要添加的依赖有 //底部导航     compile 'com.hjm:BottomTabBar:1.1.1'     //tablayout compile 'com.android.support:design:26.0.0-alpha1'   activity_main.xml    xmlns:tools="http://schemas.android.co

PremierAmour的博客 684

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android ViewPager+Fragment实现页面切换逐步解析

相信各位在开发过程中都经常使用ViewPager和Fragment吧,在使用过程中,你是否对这两个控件的使用能理解透彻?是否知道他们之间事件处理是怎么做的?今天,博主带领大家来了解一下ViewPager+Fragment的每一步操作。 首先我们需要创建主界面布局和新建几个Fragment及对应的布局(博主偷懒,就写了两个为例)。 在主界面布局中添加ViewPager控件<android.s

XiaZhenghang的博客 1562

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android来回切换,Android解决多个fragment来回切换时布局重新实例化问题

说明在我们开发过程中,一定会有这样的需求,就是主框架是MainActivity,然后里边嵌套多个fragment,来回切换,如果处理不好的话可能会产生多个fragment页面重叠,究其原因就是:当我们不退出软件,只是在后台挂着,去干别的事,当系统内存不足以回收我们这个app时,再切换回来这几个fragment页面就会重叠。replace()replace():当上一个fragment不再需要时,可...

weixin_28890941的博客 1059

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android Studio精彩案例(二)《仿微信动态点击底部tab切换Fragment》

转载本专栏文章,请注明出处,尊重原创 。文章博客地址: 现在很多的App要么顶部带有tab,要么就底部带有tab。用户通过点击tab从而切换不同的页面(大部分情况时去切换fragment)。本篇博客就通过简单的动态添加tab方式实现这个功能(当然最好的方式还是自定义控件来切换页面,就像微信那样)。 在开始之前,让我们对原型看看效果图: 因为最终效果是动态添加底部tab,我这里只是

态度决定高度A=X+Y+Z 6254

Android实习札记(5)---Fragment之底部导航栏的实现

Android实习札记(5)---Fragment之底部导航栏的实现 ——转载请注明出处:coder-pig 在Part 4我们回顾了一下Fragment的基本概念,在本节中我们就来学习Fragment应用的简单例子吧! 就是使用Fragment来实现简单的底部导航栏,先贴下效果图: 看上去很简单,实现起来也是很简单的哈!那么接着下来就看下实现的流程图吧:

代码拾荒者 898

页面布局之Tabbar实现(Fragment)

使用Fragment实现底部Tabbar,使用ViewPager实现页面可滑动的底部Tabbar,最后把TabActivity实现的Tabbar也整合到工程中,欢迎大家下载

Mr_Four 3208

知识记录一:ViewPager+Fragment实现tab

首先以主页几乎都会用到的底部菜单作为第一个知识点吧。仍然是以ViewPager+Fragment作为整体框架。首先要先会以下几个知识点: - ViewPager的用法; - Fragment的使用; - selector的用法;为了减少底部tab按钮点击切换逻辑的处理和判断,这里直接用了RadioGroup节省了这一部分的代码。不多说,直接上代码:先上selector部

hehota的博客 358

ViewPager+Fragment+FlycoTabLayout,20行代码实现tabbar(菜单切换效果)

前言 编码 补充前言首先上鸡汤,FlycoTabLayout,一个强大的第三方tabbar库(有各种体位,总有个姿势会让你舒适),点击查看相信你不会后悔。正如标题所说,只需要不到20行的代码,实现tabbar,菜单选择效果,先上图。 编码 首先创建一个项目 布局,很简单<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

一行Java的博客 8593

使用Fragment实现Tab效果

在上一篇中,我们将了使用ViewPager实现Tab效果。如果没有阅读过,可以点击下面的地址: http://www.cnblogs.com/fuly550871915/p/4849893.html 在这一篇中我们讲一下使用Fragment实现Tab效果,而这种实现方式也是推荐的方式。与用ViewPager实现的效果有一点不同。 一、效果展示 ...

bai8005的博客 271

美团式tabbar fragment管理

package com.coral3.ah.ui; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import

weixin_44659286的博客 230
上一篇: 友盟统计用户
下一篇: GridView变色
KissSheep·
博客等级 码龄9年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值