技术标签: 2018 BottomNavigationBar 底部导航 Android
1.首先要在grade里依赖下
com.ashokvarma.android:bottom-navigation-bar:2.0.4
2.在布局文件里使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/px_1"
android:background="@color/tab_text_default"
/>
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:id="@+id/bottom_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:bnbBackgroundColor="@color/bg_gray"
/>
</LinearLayout>
3.对bottomNavigationBar的一些设置
mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
mBottomNavigationBar.setTabSelectedListener(this);
//设置监听
mBottomNavigationBar.clearAll();
mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
//还用一种mode是Shifting,大家可以自己试下有何区别
mBottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
mBottomNavigationBar
.addItem(new BottomNavigationItem(R.mipmap.icon_home_on, getString(R.string.text_main_tab_home))
.setInactiveIconResource(R.mipmap.icon_home_off)
.setActiveColorResource(R.color.tab_text_selected)
.setInActiveColorResource(R.color.tab_text_default))
// .setBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.mipmap.icon_record_on, getString(R.string.text_main_tab_record))
.setInactiveIconResource(R.mipmap.icon_record_off)
.setActiveColorResource(R.color.tab_text_selected)
.setInActiveColorResource(R.color.tab_text_default))
//配置图片文字及选中时的颜色
.setFirstSelectedPosition(0) //默认位置就是0
.initialise();//初始化
4.初始化viewPager
private void initViewPager() {
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mFragments = new ArrayList<>();
mFragments.add(MainFragmentOne.newInstance());
mFragments.add(MainFragmentTwo.newInstance());
mViewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager(), mFragments));
mViewPager.addOnPageChangeListener(this);
mViewPager.setCurrentItem(0);
}
class SectionsPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragments;
public SectionsPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
5.切换或滑动时设置参数
@Override
public void onTabSelected(int position) {
mViewPager.setCurrentItem(position);
}
@Override
public void onPageSelected(int position) {
mBottomNavigationBar.selectTab(position);
}
这些弄完功能就实现了,图就不贴了
文章浏览阅读2.1k次。00%=FF(不透明) 5%=F2 10%=E5 15%=D8 20%=CC 25%=BF 30%=B2 35%=A5 40%=99 45%=8c 50%=7F 55%=72 60%=66 65%=59 70%=4c 75%=3F 80%=33 85%=21 90%=19 95%=0c_android开发透明度90%
文章浏览阅读1.2w次,点赞16次,收藏165次。 宠物网页设计 、保护动物网页、鲸鱼海豚主题、保护大象、等网站的设计与制作。️HTML宠物网页设计,采用DIV+CSS布局,共有多个页面,排版整洁,内容丰富,主题鲜明,首页使用CSS排版比较丰富,色彩鲜明有活力,导航与正文字体分别设置不同字号大小。导航区域设置了背景图。子页面有纯文字页面和图文并茂页面。 一套优质的网页设计应该包含 (具体可根据个人要求而定)网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的......_html宠物网页简单代码
文章浏览阅读28次。1.背景介绍计算机科学是一门广泛的学科,涵盖了许多领域,包括操作系统和并发编程。操作系统是计算机系统的核心,负责资源的分配和管理,而并发编程则是一种编程范式,允许多个任务同时运行。在本文中,我们将探讨计算的原理和计算技术简史,特别关注操作系统和并发编程的发展。操作系统的发展可以分为以下几个阶段:早期操
文章浏览阅读312次。【题目描述】给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。【输入】输入只有一行,包含一个字符。【输出】该字符构成的等腰三角形,底边长5个字符,高3个字符。【输入样例】*【输出样例】 * ********#include <iostream>#include <string>using namespace std;int main(){ string n; cin >> n_信奥1004
文章浏览阅读1.1k次。如何判断一个点是否在多边形内部?(1)面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。(2)夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。(3)引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。具体做法:将测试点的Y坐标与多边形的每...
文章浏览阅读94次。一、前言本篇是在分析Executors源码时,发现JUC集合框架中的一个重要类没有分析,SynchronousQueue,该类在线程池中的作用是非常明显的,所以很有必要单独拿出来分析一番,这对于之后理解线程池有很有好处,SynchronousQueue是一种阻塞队列,其中每个插入操作必须等待另一个线程的对应移除操作 ,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。二、Synchr..._cascleanme(dp, null);
文章浏览阅读1.4w次,点赞3次,收藏6次。目录1. 概述2. click 事件3. 综述4. 个人公众号1. 概述老话说的好:努力帮别人解决难题,你的难题也就不难解决了。言归正传,今天我们来聊聊 VUE3 的 click 事件的相关知识。2. click 事件2.1 实现数字递减<body> <div id="myDiv"></div></body><script> const app = Vue.createApp({_vue3 click
文章浏览阅读9.7k次,点赞19次,收藏48次。目录一、通过索引获取值二、通过索引设置值在PyTorch C++ API(libtorch)中对张量进行索引的方式与Python API的方式很相似。诸如None / ... / integer / boolean / slice / tensor的索引类型在C++ API里同样有效,这样就可以很方便的实现Python代码与C++代码的转换。主要的不同是将Python API里对张量的“[ ]”操作符转换成了以下形式:torch::Tensor::index ( ) // 获取值._libtorch 切片
文章浏览阅读6.2k次。在利用python进行文本处理时常常涉及到文本格式的转换。以下代码可以方便的实现文件格式的转换先解码再编码string.decode('GBK').encode('utf-8')#实现由gbk到utf-8的转换函数如下:#修改文件编码格式def ChangeEncode(file,fromEncode,toEncode): try: f=open(file)_python文件格式转换
文章浏览阅读2.2k次。Kali Linux 是什么?_kali linux
文章浏览阅读446次。在深度强化学习(Deep Reinforcement Learning)中,基于Q-Learning方法的DQN算法经过多个研究机构和企业的验证,是一种广泛应用的优秀算法。本文将对DQN算法进行完整的剖析,并通过实践代码、场景示例等方式,带领读者完整理解DQN算法的实现和应用。DQN算法的提出最初的目的是为了解决传统的基于价值函数的方法遇到的两个难题:如何更有效地利用非线性关系提取环境的特征信息,以及如何在连续动作空间和缺乏奖励数据的情况下训练策略网络?_gdqn算法
文章浏览阅读8.5k次。想用python处理一下文件,发现有argv这个用法,搜来学习一下。如果想对python脚步传参数,那么就需要命令行参数的支持了,这样可以省的每次去改脚步了。用法是:python xx.py xxx举例如下:#-*- coding:utf- -*-from sys import argvscript,first = argvprint "the script is called:", script..._python argv