实现底部导航栏的方式有很多种,此处我只是采用了其中一种,其余的方法可自行百度去查询。

效果图展示

一、布局文件内容

<?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"android:orientation="vertical"tools:context=".MainActivity"><FrameLayoutandroid:id="@+id/fl_content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></FrameLayout><LinearLayoutandroid:id="@+id/group"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="horizontal"><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_sy"android:layout_width="25dp"android:layout_height="23dp"android:background="@mipmap/sy_yes"android:button="@null"android:clickable="true" /><TextViewandroid:id="@+id/tx_sy"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="5dp"android:gravity="center"android:text="首页"android:textColor="#e70a0a"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:gravity="center"><ImageViewandroid:id="@+id/lv"android:layout_width="25dp"android:layout_height="23dp"android:background="@mipmap/lv_no"android:button="@null"android:clickable="true" /><TextViewandroid:id="@+id/tx_lv"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="5dp"android:gravity="center"android:text="我的履职" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:gravity="center"><ImageViewandroid:id="@+id/iv_advice"android:layout_width="25dp"android:layout_height="23dp"android:background="@mipmap/advice_no"android:button="@null"android:clickable="true" /><TextViewandroid:id="@+id/tx_advice"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:layout_marginTop="5dp"android:text="我的建议"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:gravity="center"><ImageViewandroid:id="@+id/meet"android:layout_width="25dp"android:layout_height="23dp"android:background="@mipmap/meet_no"android:button="@null"android:clickable="true" /><TextViewandroid:id="@+id/tx_meet"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:layout_marginTop="5dp"android:text="会议文件" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:orientation="vertical"android:visibility="gone"android:gravity="center"><ImageViewandroid:id="@+id/center"android:layout_width="25dp"android:layout_height="23dp"android:background="@mipmap/center_no"android:button="@null"android:clickable="true" /><TextViewandroid:id="@+id/tx_center"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="个人中心" /></LinearLayout></LinearLayout>
</LinearLayout>

提示:最外层应使用LinearLayout,不然android:layout_height="0dp"和android:layout_weight="1"属性不起作用,这2个属性联合使用作用是使用界面上剩余的空间

二、主文件代码

package com.example.administrator.myapplication;import android.graphics.Color;
import android.net.Uri;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;import com.example.administrator.myapplication.fragment.AdviceFragment;
import com.example.administrator.myapplication.fragment.CenterFragment;
import com.example.administrator.myapplication.fragment.LzFragment;
import com.example.administrator.myapplication.fragment.MeetFragment;
import com.example.administrator.myapplication.fragment.SyFragment;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;public class MainActivity extends AppCompatActivity {private ImageView[] imageList;private TextView[] text;private ImageView sy,advice,lv,meet,center;private TextView  tx_sy,tx_advice,tx_lv,tx_meet,tx_center;private int curIndex = 0;//当前点击的位置//图片默认样式集合private int[] seIds = {R.mipmap.sy_no,R.mipmap.advice_no,R.mipmap.lv_no,R.mipmap.meet_no,R.mipmap.center_no};//图片选中样式集合private int[] noseIds = {R.mipmap.sy_yes,R.mipmap.advice_ok,R.mipmap.lv_yes,R.mipmap.meet_yes,R.mipmap.center_ok};private Fragment fragment;//当前fragment@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getAllView();setListener();getSupportFragmentManager().beginTransaction().add(R.id.fl_content, new SyFragment()).commit();}public void getAllView() {sy = (ImageView)findViewById(R.id.iv_sy);advice = (ImageView)findViewById(R.id.iv_advice);lv = (ImageView)findViewById(R.id.lv);meet = (ImageView)findViewById(R.id.meet);center = (ImageView)findViewById(R.id.center);tx_sy = (TextView)findViewById(R.id.tx_sy);tx_advice = (TextView)findViewById(R.id.tx_advice);tx_lv = (TextView)findViewById(R.id.tx_lv);tx_meet = (TextView)findViewById(R.id.tx_meet);tx_center = (TextView)findViewById(R.id.tx_center);imageList = new ImageView[]{sy,advice,lv,meet,center};text = new TextView[]{tx_sy,tx_advice,tx_lv,tx_meet,tx_center};}public void setListener() {View.OnClickListener listener = new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.iv_sy:curIndex = 0;fragment = new SyFragment();    //首页break;case R.id.lv:curIndex = 2;fragment = new LzFragment();    //履职break;case R.id.iv_advice:curIndex = 1;fragment = new AdviceFragment();    //建议break;case R.id.meet:curIndex = 3;fragment = new MeetFragment();  //会议文件break;case R.id.center:curIndex = 4;fragment = new CenterFragment();break;}for (int i = 0; i < imageList.length; i++) {ImageView imageView = imageList[i];//当前图片选中,并且其他设置为默认样式imageView.setBackgroundResource(seIds[i]);text[i].setTextColor(Color.parseColor("#636161"));if (i == curIndex) {imageView.setBackgroundResource(noseIds[i]);text[i].setTextColor(Color.parseColor("#e70a0a"));}}getSupportFragmentManager().beginTransaction().replace(R.id.fl_content, fragment).commit();}};sy.setOnClickListener(listener);advice.setOnClickListener(listener);lv.setOnClickListener(listener);meet.setOnClickListener(listener);center.setOnClickListener(listener);}}

三、Fragment代码

package com.example.administrator.myapplication.fragment;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import com.example.administrator.myapplication.R;public class LzFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View v = LayoutInflater.from(this.getActivity()).inflate(R.layout.lz_layout, null);return v;}}

四、layout文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="我爱你"android:gravity="center"android:textColor="#283784"/>
</RelativeLayout>

转载于:https://www.cnblogs.com/zblwyj/p/11350635.html

利用FrameLayout+LinearLayout实现Android底部导航栏切换相关推荐

  1. Android底部导航栏切换页面填坑

    ** Android底部导航栏切换页面填坑 ** 这个效果的实现关键点就是给选项赋予两种状态,focused和normal,在主程序中用监听判断是否被选中,就给被选中的选项设focused为true, ...

  2. Android底部导航栏+消息提醒

    Android底部导航栏+消息提醒 最近想在网上找一些Android底部导航栏切换并能提供消息提醒的案例,虽然有很多案例但都不是我想要的.我就开始自己瞎研究了,废话不多说了,直接上代码. 1.先创建一 ...

  3. Android底部导航栏最常用的两种写法

    先来看看底部导航栏的效果 Android 底部导航栏有很多种写法,例如: RadioGroup , Tablayout, TabHost  , LinearLayout + ImageView + T ...

  4. android fragment 底部菜单栏,一句话搞定Android底部导航栏,一键绑定Fragment、ViewPager...

    现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ.微信.购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容.它的实现方式也很多,以前大多使用TabHost来实现,但是现在我 ...

  5. android 固定底部导航,如何设置android底部导航栏位置固定在android

    请帮我设置底部导航栏位置固定在底部, ,因为我在输入editText字段时遇到问题,底部导航栏向上移动并覆盖其他领域如何设置android底部导航栏位置固定在android 代码: xmlns:and ...

  6. 转载:Android底部导航栏,三种风格和实现

    原文出处 标题:Android底部导航栏,三种风格和实现 作者:阿飞__ 原文链接:Android底部导航栏,三种风格和实现_阿飞__的博客-CSDN博客_android导航栏 一.效果图展示 如果动 ...

  7. Android底部导航栏的三种风格实现

    一.效果图展示 如果动图没有动的话,也可以看下面这个静态图 以下挨个分析每个的实现,这里只做简单的效果展示,大家可以基于目前代码做二次开发. 二.BottomNavigationView 这是 Goo ...

  8. Android中的底部导航栏切换TabContainerView

    前言:在GitHub上看到一个框架,实现底部导航栏切换,感觉不错,就在这里总结一下. 参考:https://www.jianshu.com/p/9aaff43bbf9f https://github. ...

  9. Android底部导航栏的四种实现

    现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ.微信,购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容.它的实现方式也很多,以前大多使用TabHost来实现,但是现在我 ...

最新文章

  1. 腾讯优图+厦门大学发布!2021十大人工智能趋势
  2. java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
  3. ffmpeg avstream::codec 被声明为已否决
  4. DRBD的安装与配置
  5. 具有Spring Boot和数据功能的Java头优先弹性搜索
  6. 教你29招,让你在社交,职场上人人对你刮目相看
  7. sql string转number_少用 string.Format
  8. 设计模式C++实现--Factory模式
  9. 2021第四届浙江省大学生网络与信息安全竞赛预赛部分Writeup
  10. java计算机毕业设计教务排课系统MyBatis+系统+LW文档+源码+调试部署
  11. led拼接屏报价_液晶拼接屏报价大概多少钱一套?
  12. python批量png转ico
  13. 学python看小甲鱼还是黑马_为什么我看完小甲鱼的python视频还是不会写呢?
  14. 近几年美国人口数据matlab,2010-2019年美国人口数量及人口性别、年龄、城乡结构分析...
  15. ERP软件公司选型的重要根据
  16. 印刷企业数字化建设时,如何让ERP与MES做到优势互补
  17. C语言 整数形式输出
  18. vue延迟渲染组件_Vue 动态组件渲染问题分析
  19. 方韦——鸦滩的小方韦
  20. 楼宇自控BACnet/IP协议网关功能特点

热门文章

  1. 善行像种子,总有发芽的一天!
  2. 服务器信息管理 实例,配置信息输出到syslog服务器示例
  3. 新手入门先学习指绘还是板绘?两者有什么区别?
  4. java-net-php-python-jspm校园线上零食屋计算机毕业设计程序
  5. 后疫情时代,中国零售业正在全面复苏
  6. vue项目中设置全局loading时 遇到多个请求时loading加载显示问题
  7. CentOS安装Redis及redis启动与关闭、配置(详细)
  8. MPLS TE可靠性及其案例
  9. star nx600竖线打印扭曲解决办法
  10. 从月薪 7.5K 再到拿到字节跳动 20K*14 薪那天,我泪目了,没人知道我付出了多少