导航栏的使用(ToolBarBottomNavgationView)

Posted superbrucess

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航栏的使用(ToolBarBottomNavgationView)相关的知识,希望对你有一定的参考价值。

一、ToolBar标题栏的使用
toolbar标题栏:一个 ToolBar 的基本组成,包括左侧导航图标、标题、子标题等。

具体的创建步骤如下:

1、隐藏页面自带标题栏
(1)将应用主题设为 NoActionBar

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    >

(2)在 Java 代码中调用 requestWindowFeature()方法
注意:有些android studio软件可能因为版本的不同,无法调用这个方法

@Override
 protected void onCreate(Bundle savedInstanceState) 
 super.onCreate(savedInstanceState);
 requestWindowFeature(Window.FEATURE_NO_TITLE) 
 setContentView(R.layout.activity_study);
 ……

2、在页面布局文件中加入 ToolBar
在页面布局设计中,加入androidx.appcompat.widget.Toolbar控件,根据toolbar栏的功能需要,可以在里面添加其他的控件。
具体代码省略

3、在 Activity 代码中设置 ToolBar

public class MainActivity extends AppCompactActivity 
private ToolBar toolBar;
@Override
 protected void onCreate(Bundle savedInstanceState) 
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 toolBar = findViewById(R.id.toolbar);
 //设置 Logo 图标
 toolBar.setLogo(R.drawable.logo);
 //设置左侧导航图标
 toolBar.setNavigationIcon(R.drawable.ic_back);
 //设置标题
 toolBar.setTitle("标题栏");
 //设置标题文字颜色
 toolBar.setTitleTextColor(Color.BLACK);
//设置子标题
 toolBar.setSubtitle("子标题栏");
 //设置背景颜色
 toolBar.setBackgroundResource(R.color. colorAccent);
 //设置 ToolBar 对象
 setSupportActionBar(toolBar);
toolbar.setNavigationOnClickListener(
new OnClickListener()
 @Override
 public void onClick(View v) 
 finish();
 
);


在这里尤为要注意的是添加导航图标点击事件监听之前需要写setSupportActionBar()方法以使用设置好的toolbar控件。

以上步骤就能实现一个简单的toolbar工具栏

二、菜单控件的使用
菜单项:对于ToolBar 上没有空间完全显示的菜单项或设
置为不显示的菜单项则隐藏在右侧的溢出菜单中,
1、添加菜单资源
在res目录下,创建个menu存放菜单资源文件夹


添加item:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_search"
        android:title="搜索"
        android:icon="@mipmap/xuexi"
        app:showAsAction="always"
        app:actionViewClass="androidx.appcompat.widget.SearchView"
        />
    <item android:id="@+id/action_join"
        android:title="加入"
        android:icon="@mipmap/huodong"
        app:showAsAction="always"/>
    <item android:id="@+id/action_notifications"
        android:title="提示"
        android:icon="@mipmap/user_photo"
        app:showAsAction="ifRoom"/>
    <item android:id="@+id/action_quit"
        android:title="退出"
        android:orderInCategory="100"
        android:icon="@mipmap/left"
        app:showAsAction="never"/>
</menu>

我这里添加了搜索栏searchview。

2、加载菜单

@Override
public Boolean onCreateOptionsMenu(Menu menu) 
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;

3、给菜单项添加点击事件

 //工具栏菜单项点击事件
        toolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() 
            @Override
            public boolean onMenuItemClick(MenuItem item) 
                switch(item.getItemId()) 
                    case R.id.action_join:
                        Toast.makeText(MainActivity.this,"点击加入",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.action_notifications:
                        Toast.makeText(MainActivity.this,"点击提示",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.action_quit:
                        Toast.makeText(MainActivity.this,"点击退出",
                                Toast.LENGTH_SHORT).show();
                        break;
                     case R.id.action_search:
                         Toast.makeText(MainActivity.this,"点击搜索",
                                 Toast.LENGTH_SHORT).show();
                         break;
                    default:
                        break;
                
                return true;
            
        );

注意,以上代码需要放在setSupportActionBar()之后,否则不起作用。

下面介绍底部导航栏的使用
控件:BottomNavigationView
1、导入依赖包
在使用该控件之前需要在dependencies中导入依赖包:’com.google.android.material:material:1.2.0’;

2、设计底部导航栏
此处的思路同使用menu组件时候的实现思路一样,仍然需要在menu文件夹中完成
具体代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
 android:id="@+id/points"
 android:icon="@drawable/points"
 android:title="积分" />
<item
 android:id="@+id/answer"
 android:icon="@drawable/answer"
 android:title="答题" />
<item
 android:id="@+id/study"
 android:icon="@drawable/study"
 android:title="学习" />
<item
 android:id="@+id/radio"
 android:icon="@drawable/ radio "
 android:title="电台" />
<item
 android:id="@+id/tv"
 android:icon="@drawable/tv"
 android:title="电视台" />
</menu>

3、将 BottomNavigationView 控件加入布局
根据底部栏所在的包,添加一个BottomNavigationView 控件,并设置背景、文字颜色、图标颜色等属性

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".activity.StudyActivity">
 <com.google.android.material.bottomnavigation.BottomNavigationView
 android:id="@+id/bottom_nav"
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:layout_alignParentBottom="true"
 android:background="#ffffff"
 app:itemBackground="@null"
 app:itemIconTint="@drawable/selector_nav"
 app:itemTextColor="@drawable/selector_nav"
 app:labelVisibilityMode="labeled"
 app:menu="@menu/nav_menu" />
</RelativeLayout>

4、添加 BottomNavigationView 点击效果
通常需要将BottomNavigationView 控件与fragement相结合使用。
具体实现说明省略

以上是关于导航栏的使用(ToolBarBottomNavgationView)的主要内容,如果未能解决你的问题,请参考以下文章

Swift5 导航栏的使用 2022年11月更新

底部导航栏的 onItemSelectedListener

Android应用-底部导航栏的使用

导航栏的使用(ToolBarBottomNavgationView)

如何在不使用导航栏的情况下从导航堆栈中弹出控制器

使用底部导航时删除应用栏的后退按钮 - 颤动