Android Material Design之MaterialToolbar(三)

news2024/11/19 21:20:29
  • 上图
    在这里插入图片描述

  • 引入

implementation 'com.google.android.material:material:1.4.0'
  • 属性
属性描述
app:menu右侧菜单文件
app:navigationIcon左侧返回按钮
app:title主标题栏文本
app:titleCentered主标题栏文本是否居中
app:titleTextColor主标题栏文本颜色
app:subtitle子标题栏文本
app:subtitleCentered子标题栏是否居中
app:subtitleTextColor子标题栏文本颜色
app:logo标题栏logo图标
  • 使用
  1. 布局源代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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">

    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/design_default_color_primary_variant"
        app:menu="@menu/menu"
        app:navigationIcon="@drawable/ic_baseline_arrow_back_24"
        app:subtitle="我是一个子标题"
        app:subtitleCentered="false"
        app:subtitleTextColor="@color/white"
        app:title="我是一个标题"
        app:titleCentered="true"
        app:logo="@mipmap/ic_launcher"
        app:titleTextColor="@color/white" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
  1. 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/more"
        android:icon="@drawable/ic_baseline_more_vert_24"
        android:title="更多"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/scan"
                android:title="扫一扫" />
        </menu>
    </item>
</menu>
  1. activity 源代码
package com.yyf.demo;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;

import com.yyf.demo.databinding.ActivityMain3Binding;

public class MainActivity extends AppCompatActivity {
    private ActivityMain3Binding binding;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        binding = ActivityMain3Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        //引入toolBar
        setSupportActionBar(binding.toolbar);
		//toolBar 左侧返回图标事件
        binding.toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: 点击了返回图标");
            }
        });
    }
	
	//引入menu布局文件
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
	
	//menu选项被点击响应事件
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.scan:
                Log.d(TAG, "onOptionsItemSelected: " + item.getTitle());
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}
  • 注意事项

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
该异常说明已经有一个标题栏存在,不能再去设置一个,解决方式如下:

  1. 在activity中setContentView()前设置supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
  2. AndroidManifest.xml中修改application标签theme属性
<style name="Theme.BaseTheme" parent="Theme.Design.NoActionBar">
</style>
  • 文中Activity使用了ViewBinding 若直接复制报错,请在项目中build.gradle android标签 下开启
	buildFeatures{
        viewBinding=true
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenSergo ShardingSphere 社区共建微服务视角的数据库治理标准

作者&#xff1a;赵奕豪&#xff08;宿何&#xff09; 为什么需要微服务治理与 OpenSergo&#xff1f; 在经典微服务架构中&#xff0c;我们通常将服务调用中各角色划分为三部分&#xff1a;服务提供者、服务消费者、注册中心。经典的微服务架构可以解决微服务能调通、可以运…

我的家乡潍坊HTML静态网页 学生个人网页设计作品 学生家乡网页模板 简单个人主页成品

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

ESP8266 如何使用 GPIO13 GPIO15 进行 UART0 通信?

1. 修改默认的日志输出串口 UART0 为 UART1 使用 ESP8266 UART1&#xff08;GPIO2&#xff09;作为程序日志输出串口&#xff0c;可进行如下配置&#xff1a; menuconfig -> Component Config -> Common ESP-related Channel for console output -> Custom UARTUART…

蓝桥杯第十四届第二期题目【Java解析】

目录 ✏️写在前面 ✨历史回顾 &#x1f388;第一题&#xff08;二进制API&#xff09; 代码&#xff1a; 思路&#xff1a; &#x1f388;第二题&#xff08;闰年问题/时间API&#xff09; 代码1&#xff1a; 思路1&#xff1a; 代码2&#xff1a; 思路2&#xff1a…

【软件测试】出现频率最高,软件测试问题,所有考虑的解答......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 XXX岁&#xff0c;可…

【C++】经典二叉树面试题

二叉树前中后序遍历的实现 1.非递归实现 1 我们先回顾一下三种遍历&#xff1a; 前序遍历&#xff1a;根->左->右&#xff1a; F-C-A -D-B-E-H-G-M中序遍历&#xff1a;左->根->右&#xff1a; A-C-B-D-F-H-E-M-G后序遍历&#xff1a;左->右->根&#xf…

与“改善”形成两个轮子。落实“改善”的东西

与“改善”形成两个轮子。落实“改善”的东西 简单地说&#xff0c;“用心”不只是“用心”&#xff0c;科学地推进的思考就是“自工程完结”。这是一种彻底、科学地思考“只能做好工作”“只能做出好东西”的条件是什么。 “改善”、“QC循环”、“丰田生产方式”等&#xff…

Java常量:Java常量的定义和分类

常量是指在程序的整个运行过程中值保持不变的量。在这里要注意常量和常量值是不同的概念&#xff0c;常量值是常量的具体和直观的表现形式&#xff0c;常量是形式化的表现。通常在程序中既可以直接使用常量值&#xff0c;也可以使用常量。 Java入门基础视频教程&#xff0c;ja…

物联网智能家居总体设计与实现

物联网智能家居突出特点就在于家居都连接入网&#xff0c;且都可以通过一定手段进行智能控制。 图3-1 物联网智能家居框架 如图3-1所示&#xff0c;构建了一个现代家庭中所涉及到的所有物联网智能家居相关的框架。包括了安防、照明、互联网、影音、饮水、停车等方方面面。下面本…

深入理解MySQL索引的数据结构和事务的四大特性、隔离性的四种级别

1.索引1.2 使用索引2.索引的数据结构【重点】3. 事务3.1 使用3.2 事务的四大特性1.索引 概念 索引是一种特殊的文件,饱含着对数据表里所有记录的引用指针。可以对表中的一列或者多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 作用 …

Linux学习-46-LVM逻辑卷管理机制

11.9 LVM逻辑卷管理机制&#xff08;硬盘分区管理&#xff09; 我们在实际使用 Linux 服务器的时候&#xff0c;随着业务的增加&#xff0c;文件系统负载会越来越大&#xff0c;当到了空间不足的情况时&#xff0c;如果我们还在使用传统的分区方式管理硬盘&#xff0c;就不得不…

项目管理的核心是什么?

管理的核心是目标管理 目标管理通俗来讲是对做什么的思考&#xff0c;作为管理者在面向业务的开展过程中&#xff0c;根据业务的动态调整目标&#xff0c;大目标不变的情况下&#xff0c;去不断思考做什么更好地完成目标。 目标发展的几个阶段 1、相关的概念 项目启动&…

做测试8年,刚升主管,还是没逃过裁员....

我做测试8年&#xff0c;半年前被升为测试部门主管&#xff0c;本以为马上到达人生巅峰&#xff0c;没想到公司今天通知跟我解约。 回想晋升的这半年&#xff0c;我也曾激情满满&#xff0c;想着一定要好好干出一番成绩。可做了之后才发现这是个坑&#xff1a; 每天不是在开会…

一个简单的HTML网页 故宫学生网页设计作品 dreamweaver作业静态HTML网页设计模板 旅游景点网页作业制作

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

计算机网络第七章知识点回顾(自顶向下)

第七章知识点回顾1.网络层1.1网络层服务1.1.1网络层的两个主要功能1.1.2选路和转发的关系1.2网络层: 数据面和控制面1.网络层 Chapter goals: 理解网络层服务原理&#xff0c;主要关注数据面 网络层服务模型网络层上的重要功能&#xff1a;转发和选路路由器工作原理编址因特网…

【linux】cpu过高解决方法

CPU过高情况&#xff1a; 1、使用top命令查看cpu的进程占用情况&#xff1a; 2、发现11443的进程占比过高&#xff0c;通过top -Hp 11443 查看线程的占用情况&#xff0c;发现11459、11460、11461线程的占比过高&#xff1a; 解决swap占用CPU&#xff1a; 设置vm.swappiness0…

win10录屏快捷键是什么?电脑录屏快捷键ctrl+alt+

​在我们日常生活中&#xff0c;经常会使用电脑。我们在使用win10电脑的时候&#xff0c;有时候经常会遇到一些好看的视频或者是一些十分有用的知识教程&#xff0c;想要对其进行保存与分享&#xff0c;这个时候就需要用到电脑自带的录屏功能了。那么win10录屏快捷键是什么&…

Ubuntu22 Docker运行SRS流媒体服务,推拉流,yolov5训练自定义模型进行视频流识别

首先安装docker&#xff0c;设置系统启动 sudo apt-get install -y docker.io sudo systemctl start docker 查看docker进程 ps -ef|grep docker 拉去srs镜像 sudo docker pull registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v4.0.198 启动镜像 sudo docker run -p 193…

PPT设置“只读模式”的两种方法

想要防止PPT文件被意外更改&#xff0c;或者禁止他人随意更改&#xff0c;我们可以给PPT设置保护模式&#xff0c;而PPT的“只读模式”就起到了这样的作用。 ​具体的设置方法有两种&#xff0c;我们可以根据不同需求选择合适的方法。 方法一&#xff1a; 防止意外更改&…

Linux安装Nexus3搭建maven私服超详细搭建上传步骤

下载nexus3.x 上传nexus压缩包并解压 启动 开启端口号 浏览器访问 ​编辑 设置开机自启动 运行用户为root (编辑nexus bin下的nexus.rc) 修改nexus3启动时要使用的jdk版本 修改nexus3默认端口 私服新建自定义的仓库 添加角色和用户 添加角色 添加用户 使用 Mave…