iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >Android 标题栏及导航栏设计与实现
  • 737
分享到

Android 标题栏及导航栏设计与实现

androidjavaandroidstudio 2023-09-25 22:09:07 737人浏览 泡泡鱼
摘要

文章目录 整体演示 一、Toolbar实现顶部标题1、案例演示2、实现步骤2.1、隐藏页面自带标题栏2.2、页面布局添加ToolBar2.3、MainActivity.java(

文章目录

整体演示

请添加图片描述

一、Toolbar实现顶部标题

1、案例演示

在这里插入图片描述

2、实现步骤

2.1、隐藏页面自带标题栏

ActionBar是Android 5.0以前的顶部标题栏,由于其不够灵活所有被ToolBar取代,所有我们要隐藏ActionBar

将主题应用设为Light.NoActionBar
1、全部页面都隐藏ActionBar
values/themes/

    <style name="Theme.MyApplication" parent="Theme.AppCompat.Light.NoActionBar">    style>

2、单个页面隐藏ActionBar
AndroidManifest.xml

    <application        android:theme="@style/Theme.AppCompat.Light.NoActionBar">    application>
2.2、页面布局添加ToolBar
<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">    <androidx.appcompat.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:layout_height="wrap_content">    androidx.appcompat.widget.Toolbar>    LinearLayout>
2.3、MainActivity.java(设置ToolBar属性)

设置了 setSupportActionBar() 后 ,toolBar的事件监听才有作用

public class MainActivity extends AppCompatActivity {    private Toolbar toolbar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化toolbar        toolbar();    }    @SuppressLint("ResourceAsColor")    public void toolbar(){        toolbar=findViewById(R.id.toolbar);        //标题        toolbar.setTitle("LuFei");        //子标题        toolbar.setSubtitle("儿子");        //loGo        toolbar.setLogo(R.drawable.lufei);        //左侧图标        toolbar.setNavigationIcon(R.drawable.left2);        //标题颜色        toolbar.setTitleTextColor(R.color.teal_200);        //背景颜色        toolbar.setBackgroundResource(R.color.white);        //设置toolbar对象        setSupportActionBar(toolbar);        toolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                //拿到了item对象,我们有id                switch (item.getItemId()){                    case R.id.menu1:                        Toast.makeText(MainActivity.this, "加入", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu2:                        Toast.makeText(MainActivity.this, "提示", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu3:                        Toast.makeText(MainActivity.this, "退出", Toast.LENGTH_SHORT).show();                        break;                }                return false;            }        });    }}

二、ToolBar添加菜单和搜索框

1、案例演示

在这里插入图片描述

2.1、创建menu资源文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2、menu_main.xml
  • always:总是在标题栏上显示菜单图标
  • ifRoom:如果右侧有空间,该项就显示在标题栏上
  • never:从不在标题栏上直接显示,一直放在溢出的菜单列表中
  • withText:如果能在标题栏上显示,除了显示图标,还要显示文字说明
  • collapseActionView:操作视图折叠为一个按钮,点击该按钮在展开操作视图,主要用于设置SearchView
<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto">    <item android:id="@+id/menu1"        android:icon="@mipmap/ic_launcher"        app:showAsAction="always"        android:title="加入" />    <item android:id="@+id/menu2"        android:icon="@mipmap/ic_launcher"        app:showAsAction="ifRoom"        android:title="提示" />    <item android:id="@+id/menu3"        android:icon="@mipmap/ic_launcher"        app:showAsAction="never"        android:title="退出" />    <item android:id="@+id/search"        android:icon="@mipmap/ic_launcher_round"        app:showAsAction="always"        app:actionViewClass="androidx.appcompat.widget.SearchView"        android:title="搜索" />menu>
2.3、MainActivity.java(加载菜单和搜索栏)
public class MainActivity extends AppCompatActivity {    private Toolbar toolbar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化toolbar        toolbar();    }    @SuppressLint("ResourceAsColor")    public void toolbar(){        toolbar=findViewById(R.id.toolbar);        //标题        toolbar.setTitle("LuFei");        //子标题        toolbar.setSubtitle("儿子");        //logo        toolbar.setLogo(R.drawable.lufei);        //左侧图标        toolbar.setNavigationIcon(R.drawable.left2);        //标题颜色        toolbar.setTitleTextColor(R.color.teal_200);        //背景颜色        toolbar.setBackgroundResource(R.color.white);        //设置toolbar对象        setSupportActionBar(toolbar);        toolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                //拿到了item对象,我们有id                switch (item.getItemId()){                    case R.id.menu1:                        Toast.makeText(MainActivity.this, "加入", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu2:                        Toast.makeText(MainActivity.this, "提示", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu3:                        Toast.makeText(MainActivity.this, "退出", Toast.LENGTH_SHORT).show();                        break;                }                return false;            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //初始化search        getMenuInflater().inflate(R.menu.menu_main,menu);        //获取搜索框菜单栏        MenuItem menuItem=menu.findItem(R.id.search);        //获取SearchView对象        SearchView searchView= (SearchView) menuItem.getActionView();        //设置搜索栏默认提示        searchView.setQueryHint("请输入商品名");        //默认搜索栏为展开状态        searchView.setIconified(false);        //设置搜索监听器        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {            //输入搜索内容后提交时触发            @Override            public boolean onQueryTextSubmit(String query) {                Toast.makeText(MainActivity.this, "您输入的内容"+query, Toast.LENGTH_SHORT).show();                return false;            }            //输入内容改变时触发            @Override            public boolean onQueryTextChange(String newText) {                return false;            }        });        return true;    }}

三、BottomNavigationView底部导航栏

1、案例演示

在这里插入图片描述

2、实现步骤

2.1、导入依赖包

在这里插入图片描述

    implementation 'com.google.android.material:material:1.4.0'
2.2、创建底部菜单栏(menu_bottom.xml)
<menu xmlns:android="http://schemas.android.com/apk/res/android">    <item android:id="@+id/bottom1"        android:title="积分"        android:icon="@drawable/xiangguotong"/>    <item android:id="@+id/bottom2"        android:title="答题"        android:icon="@drawable/bailing"/>    <item android:id="@+id/bottom3"        android:title="学习"        android:icon="@drawable/xuexi"/>    <item android:id="@+id/bottom4"        android:title="电台"        android:icon="@drawable/diantai"/>    <item android:id="@+id/bottom5"        android:title="电视台"        android:icon="@drawable/dianshitai"/>menu>
2.3、将控件加入布局
  • 去掉背景 app:itemBackground=“@null”
  • 设置导航栏图标颜色 app:itemIconTint=“@drawable/select_button_text”
  • 设置导航栏字体颜色 app:itemTextColor=“@drawable/select_button_text”
  • 解决导航栏菜单大于三个,文字不显示问题 app:labelVisibilityMode=“labeled”
<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">    <androidx.appcompat.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:layout_height="wrap_content">    androidx.appcompat.widget.Toolbar>    <FrameLayout        android:id="@+id/frameLayout"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1">    FrameLayout>    <com.google.android.material.bottomnavigation.BottomNavigationView        android:id="@+id/bottomNavigationView"        android:layout_width="match_parent"        android:layout_height="50dp"        android:background="@color/white"        app:itemBackground="@null"        app:labelVisibilityMode="labeled"        app:itemIconTint="@drawable/select_button_text"        app:itemTextColor="@drawable/select_button_text"        app:menu="@menu/menu_bottom"/>LinearLayout>

selector选择器(select_button_text.xml)

去设置字体颜色,使文字颜色动态进行改变时,没有设置成功,原因是因为如果我们需要对文字颜色使用selector时,需要在item中使用

 <selector xmlns:android="http://schemas.android.com/apk/res/android">        <item android:state_checked="true" android:color="@color/red">item>        <item android:state_checked="false" android:color="@color/black">item>    selector>

四、MainActivity.java

  1. 在MainActivity中实现点击菜单栏fragment切换
  2. 创建Fragment对象,并将其添加到FragmentLayout中
  3. 添加点击事件,根据点击的菜单项实现对应的Fragment
public class MainActivity extends AppCompatActivity {    private Toolbar toolbar;    private List<Fragment> list=new ArrayList<>();    private BottomNavigationView bottomNavigationView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化toolbar        toolbar();        //初始化底部导航        initBottomNavigation();    }    @SuppressLint("ResourceAsColor")    public void toolbar(){        toolbar=findViewById(R.id.toolbar);        //标题        toolbar.setTitle("LuFei");        //子标题        toolbar.setSubtitle("儿子");        //logo        toolbar.setLogo(R.drawable.lufei);        //左侧图标        toolbar.setNavigationIcon(R.drawable.left2);        //标题颜色        toolbar.setTitleTextColor(R.color.teal_200);        //背景颜色        toolbar.setBackgroundResource(R.color.white);        //设置toolbar对象        setSupportActionBar(toolbar);        toolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                //拿到了item对象,我们有id                switch (item.getItemId()){                    case R.id.menu1:                        Toast.makeText(MainActivity.this, "加入", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu2:                        Toast.makeText(MainActivity.this, "提示", Toast.LENGTH_SHORT).show();                        break;                    case R.id.menu3:                        Toast.makeText(MainActivity.this, "退出", Toast.LENGTH_SHORT).show();                        break;                }                return false;            }        });    }    public void initBottomNavigation(){        bottomNavigationView=findViewById(R.id.bottomNavigationView);//        bottomNavigationView.setItemIconTintList(null);                list.add(new Fragment1());        list.add(new Fragment2());        list.add(new Fragment3());        list.add(new Fragment4());        list.add(new Fragment5());        FragmentManager manager=getSupportFragmentManager();        FragmentTransaction transaction=manager.beginTransaction();        transaction.add(R.id.frameLayout,list.get(0),"积分");        transaction.add(R.id.frameLayout,list.get(1),"答题");        transaction.add(R.id.frameLayout,list.get(2),"学习");        transaction.add(R.id.frameLayout,list.get(3),"电台");        transaction.add(R.id.frameLayout,list.get(4),"电视台");        transaction.commit();        //进入主页面时显示学习页面,隐藏其他fragment        transaction.hide(list.get(0));        transaction.hide(list.get(1));        transaction.hide(list.get(3));        transaction.hide(list.get(4));        //设置底部导航选中“学习”菜单项        bottomNavigationView.setSelectedItemId(R.id.bottom3);        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(@NonNull MenuItem item) {                FragmentManager manager=getSupportFragmentManager();                FragmentTransaction transaction=manager.beginTransaction();                switch (item.getItemId()){                    case R.id.bottom1:                        transaction.hide(list.get(1));                        transaction.hide(list.get(2));                        transaction.hide(list.get(3));                        transaction.hide(list.get(4));                        transaction.show(list.get(0));                        transaction.commit();                        return true;                    case R.id.bottom2:                        transaction.hide(list.get(0));                        transaction.hide(list.get(2));                        transaction.hide(list.get(3));                        transaction.hide(list.get(4));                        transaction.show(list.get(1));                        transaction.commit();                        return true;                    case R.id.bottom3:                        transaction.hide(list.get(1));                        transaction.hide(list.get(0));                        transaction.hide(list.get(3));                        transaction.hide(list.get(4));                        transaction.show(list.get(2));                        transaction.commit();                        return true;                    case R.id.bottom4:                        transaction.hide(list.get(1));                        transaction.hide(list.get(2));                        transaction.hide(list.get(0));                        transaction.hide(list.get(4));                        transaction.show(list.get(3));                        transaction.commit();                        return true;                    case R.id.bottom5:                        transaction.hide(list.get(1));                        transaction.hide(list.get(2));                        transaction.hide(list.get(3));                        transaction.hide(list.get(0));                        transaction.show(list.get(4));                        transaction.commit();                        return true;                }                return false;            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //初始化search        getMenuInflater().inflate(R.menu.menu_main,menu);        //获取搜索框菜单栏        MenuItem menuItem=menu.findItem(R.id.search);        //获取SearchView对象        SearchView searchView= (SearchView) menuItem.getActionView();        //设置搜索栏默认提示        searchView.setQueryHint("请输入商品名");        //默认搜索栏为展开状态        searchView.setIconified(false);        //设置搜索监听器        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {            //输入搜索内容后提交时触发            @Override            public boolean onQueryTextSubmit(String query) {                Toast.makeText(MainActivity.this, "您输入的内容"+query, Toast.LENGTH_SHORT).show();                return false;            }            //输入内容改变时触发            @Override            public boolean onQueryTextChange(String newText) {                return false;            }        });        return true;    }}

5、底部栏图片

请添加图片描述

请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述

来源地址:https://blog.csdn.net/qq_52108058/article/details/127794966

--结束END--

本文标题: Android 标题栏及导航栏设计与实现

本文链接: https://www.lsjlt.com/news/417792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 标题栏及导航栏设计与实现
    文章目录 整体演示 一、Toolbar实现顶部标题1、案例演示2、实现步骤2.1、隐藏页面自带标题栏2.2、页面布局添加ToolBar2.3、MainActivity.java(...
    99+
    2023-09-25
    android java android studio
  • Android 标题栏、状态栏、系统栏、导航栏、应用栏及各个位置的颜色设置
    文章目录 实例图片状态栏标题栏导航栏系统栏应用栏actionBar和toolBar的区别ActionBar代码:显示结果:ActionBar显示选项菜单项 ToolBarToolbar...
    99+
    2023-09-11
    android
  • Android WindowInsetsController 设置状态栏、导航栏
    WindowInsetsController 窗口控制器 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//android 30val windowInsetsController...
    99+
    2023-08-19
    android
  • CSS导航栏菜单设计:设计多种导航栏菜单样式
    CSS导航栏菜单设计:设计多种导航栏菜单样式,需要具体代码示例导航栏是网站界面的重要组成部分,通过不同的样式和布局,可以为用户提供简洁、直观的导航方式。本文将介绍并提供多种CSS导航栏菜单的设计样式,同时给出相应的代码示例。垂直导航栏菜单:...
    99+
    2023-11-18
    - CSS - 导航栏 - 菜单设计
  • CSS网页导航栏设计:制作各种导航栏样式
    CSS网页导航栏设计:制作各种导航栏样式,需要具体代码示例导航栏是网页设计中极为重要的组成部分之一,它不仅可以方便用户浏览网站的不同页面,还可以提供网站结构的清晰导向。在设计导航栏时,我们常常面临的问题是如何打造一个既美观又功能实用的导航栏...
    99+
    2023-11-18
    CSS 样式 网页导航栏
  • android实现简单底部导航栏
    本文实例为大家分享了android实现底部导航栏的具体代码,供大家参考,具体内容如下 常见的底部导航栏 动态效果 实现步骤 1.底部导航栏样式 我们应该在项目的res文件夹下新建...
    99+
    2024-04-02
  • Android实现底部导航栏效果
    目前网上主流的文章都是用底部的 RadioGroup + 页面部分的 Fragment 实现导航栏切换页面效果的。 然而底部的 RadioGroup 是如此麻烦,每个按钮的图片和文字...
    99+
    2024-04-02
  • css如何实现垂直导航栏和水平导航栏
    这篇文章给大家分享的是有关css如何实现垂直导航栏和水平导航栏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   垂直导航栏的样式   <!DOCTYPEhtml>...
    99+
    2024-04-02
  • Android使用RadioGroup实现底部导航栏
    RadioGroup实现底部导航栏效果,如图:: 实现可最基本的导航栏功能,不能左右滑动,只能点击内嵌的fragment的布局:<?xml version="1.0" encoding="utf-8"?>...
    99+
    2023-05-30
    radiogroup 导航栏 gr
  • Android Fragment实现顶部、底部导航栏
    前言 无论是顶部还是底部导航栏,都是大多数APP的标配,网络上的相关实现教程也非常之多。最近回忆起以前写的小项目,发现对这块内容有些遗忘,不妨就再整理一遍代码逻辑,记录下来,方便日后...
    99+
    2024-04-02
  • Android顶部标题栏的布局设计
    目录自定义标题栏布局与九宫格背景图布局九宫格图片总结自定义标题栏 通常我们的活动页面都会根据需要都会有不同的标题栏需要选择,一般有两个场景,一个是统一标题栏,通过引入布局到活动来进行...
    99+
    2024-04-02
  • Android实现底部导航栏方法(Navigation篇)
    Navigation实现底部导航栏 前言导入和基本使用导入基础使用创建nav文件编辑Nav文件添加页面(代码版)添加页面(图解版) 创建导航动作 action创建action(代码版)...
    99+
    2023-10-10
    android
  • flutter实现底部导航栏
    本文实例为大家分享了flutter实现底部导航栏的具体代码,供大家参考,具体内容如下 一.flutter底部导航栏常用组件BottomNavigationBar 属性介绍 Botto...
    99+
    2024-04-02
  • Angular实现二级导航栏
    本文实例为大家分享了Angular实现二级导航栏的具体代码,供大家参考,具体内容如下 1、将菜单放入数据库: 模拟放到该路径下:src/assets/json/header.json...
    99+
    2024-04-02
  • Javascript实现简易导航栏
    本文实例为大家分享了Javascript实现简易导航栏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en">...
    99+
    2024-04-02
  • ANDROID BottomNavigationBar底部导航栏的实现示例
    第一种介绍的就是使用开源库,因为使用开源库最简单,也更加的符合我们的审美标准,同时BottomNavigationBar还是符合当前的Material Design标准的。效果展示依赖compile'com.ashokvarma.andro...
    99+
    2023-05-30
    android bottomnavigationbar ott
  • CSS3如何实现导航栏
    小编给大家分享一下CSS3如何实现导航栏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!上面是一个效果图,代码在下面:htmlXM...
    99+
    2024-04-02
  • 微信小程序动态设置导航栏标题的实现步骤
    目录前言使用配置文件配置导航栏标题实现步骤效果图总结前言 哈喽大家好,本期是微信小程序专栏第十八期。本期主要内容是动态设置导航栏标题。导航栏是页面最顶部的一块区域。本期使用两种方法来...
    99+
    2023-02-09
    微信小程序动态设置导航栏标题怎么设置 微信小程序标题在哪设置 微信小程序自定义导航栏
  • Android Studio实现标题栏和状态栏的隐藏
    Android Studio在实现隐藏标题栏和状态栏上和Eclipse是完全不一样的。在Eclipse上隐藏标题栏和状态栏的代码如下:方法一: requestWindowFeature(Window.FEATURE_NO_TITLE);方法...
    99+
    2023-05-30
    android 标题栏 状态栏
  • Android导航栏页面跳转怎么设置
    在Android中,可以使用Intent来实现页面的跳转。以下是一种常见的方式: 在当前Activity中,创建一个Intent...
    99+
    2023-10-26
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作