Material Design 操作栏样式自定义的最佳方法

Material Design 是谷歌公司推出的一种设计语言,主要用于移动设备和网络应用的 UI 设计。它的特点是扁平化、卡片化和动画化,让用户在使用应用时可以感受到直观、简单、快速和自然的操作体验。

在 Material Design 中,操作栏是一个很重要的组件。它通常包含应用的主要功能和导航菜单,是用户和应用之间交互的主要入口。默认情况下,操作栏的样式是由谷歌官方提供的,如下图所示。

然而,有时候我们需要根据应用的需要自定义操作栏的样式。比如,改变操作栏的背景色、文本颜色、图标等等。在本文中,我们将介绍 Material Design 操作栏样式自定义的最佳方法,希望能帮助读者更好地掌握这项技术。

在布局文件中定义操作栏

首先,在布局文件中定义操作栏。可以使用 Toolbar 组件来代替默认的操作栏,如下所示。

----------------------------------
    -------------------------
    -----------------------------------
    -------------------------------------------
    -----------------------------------------
    ---------------------------------
    -----------------------------------------------

布局文件解释

  • android:id="@+id/toolbar":操作栏的 ID,用于在代码中获取该组件对象。
  • android:layout_width="match_parent":操作栏的宽度为屏幕宽度。
  • android:layout_height="?attr/actionBarSize":操作栏的高度为主题中定义的高度。
  • android:background="@color/primary_color":操作栏的背景色为主题中定义的颜色。
  • app:titleTextColor="@color/white":操作栏标题文本的颜色为主题中定义的白色。
  • app:popupTheme="@style/AppTheme.PopupOverlay":操作栏弹出菜单的主题为主题中定义的弹出菜单主题。

注意:由于使用了 androidx.appcompat.widget.Toolbar 组件,需要在布局文件的根元素中添加 xmlns:app="http://schemas.android.com/apk/res-auto" 属性。

在主题文件中定义样式

接下来,在主题文件中定义操作栏样式。可以使用 ToolBar 元素来定义样式,如下所示。

------ --------------- ----------------------------------------------------
    ---- ------- ----- ------ ---
    ----- -----------------------------------------------
    ----- --------------------------------------------------------------
    ----- -----------------------------------------

    ---- --------- ----- ------ ---
    ----- ---------------------------------------------------
    ----- ------------------------------------------------------------------
    ----- -------------------------------------------

    ---- ------ --- ------ ---
    ----- ----------------------------- -----------------------------------------------------
    ----- ----------------------------- ----------------------------------------------------

    ---- ---------- --- ------ ---
    ----- --------------------------------- -----------------------------------------------
    ----- ---------------------------------------- -----------------------------------------------------

    ---- ------- ------ ---
    ----- -------------------------------------------------------
--------

------ ---------------------------- ---------------------------------------------------
    ----- -----------------------------------------------------
    ----- -----------------------------------------
    ----- -----------------------------------------------
    ----- -----------------------------------------------------
    ----- ----------------------------------------------------
--------

主题文件解释

  • parent="Theme.MaterialComponents.Light.NoActionBar":主题继承自 Material Design 系统主题,并禁用了默认的操作栏。

  • colorPrimary:应用的主要颜色,影响操作栏、状态栏等。

  • colorOnPrimary:在这种颜色上呈现文本和图标的颜色。

  • statusBarColor:状态栏的颜色,使应用与该颜色背景合并。

  • navigationBarColor:导航栏的颜色。

  • toolbarStyle:在主题文件中自定义操作栏样式的入口。

  • parent="Widget.MaterialComponents.Toolbar.Primary":Toolbar 控件的样式,继承自 Material Design 样式并设置为主要 Toolbar(位于操作栏上)的样式。

  • android:background:操作栏的背景色。

  • titleTextColor:标题文本的颜色。

  • subtitleTextColor:副标题文本的颜色。

  • popupTheme:弹出菜单的主题。

  • navigationIcon:导航按钮的图标。

在代码中设置操作栏样式

最后,在代码中设置操作栏的样式。我们可以使用 setSupportActionBar() 方法来替换默认的操作栏,如下所示。

------- ------- - ---------------------------
-----------------------------

注意:如果设置 setSupportActionBar() 之前添加菜单项,则可能会导致菜单项不显示。要避免这种情况,可以在 setSupportActionBar() 之后添加菜单项。

综合示例

下面是 Material Design 操作栏样式自定义的综合示例代码。在 Android Studio 中新建一个空白活动,然后复制下面的 XML 和 Java 代码。运行应用程序并观察操作栏的样式。

activity_main.xml

----- ------------- ------------------
---------------
    ----------------------------------------------------------
    ---------------------------------------------------
    -----------------------------------
    -------------------------------------

    ----------------------------------
        -------------------------
        -----------------------------------
        -------------------------------------------
        -----------------------------------------
        -----------------
        ---------------------------------
        -----------------------------------------------

    ---------
        --------------------------
        ----------------------------------
        ------------------------------------
        ------------------- -------
        -----------------------
        --------------------------

-----------------

styles.xml

-----------
    ---- ---- ----------- ------ ---
    ------ --------------- ----------------------------------------------------
        ---- ------- ----- ------ ---
        ----- -----------------------------------------------
        ----- --------------------------------------------------------------
        ----- -----------------------------------------

        ---- --------- ----- ------ ---
        ----- ---------------------------------------------------
        ----- ------------------------------------------------------------------
        ----- -------------------------------------------

        ---- ------ --- ------ ---
        ----- ----------------------------- -----------------------------------------------------
        ----- ----------------------------- ----------------------------------------------------

        ---- ---------- --- ------ ---
        ----- --------------------------------- -----------------------------------------------
        ----- ---------------------------------------- -----------------------------------------------------

        ---- ------- ------ ---
        ----- -------------------------------------------------------
    --------

    ---- ------- ------ ---
    ------ ---------------------------- ---------------------------------------------------
        ----- -----------------------------------------------------
        ----- -----------------------------------------
        ----- -----------------------------------------------------
        ----- ----------------------------------------------------
    --------

    ---- ----- ------- ------ ---
    ------ ---------------------------- ------------------------------------------------
------------

MainActivity.java

------ -----------------------------------------
------ ----------------------------------

------ ------------------

------ ----- ------------ ------- ----------------- -

    ---------
    --------- ---- --------------- ------------------- -
        -----------------------------------
        ---------------------------------------

        ------- ------- - ---------------------------
        -----------------------------
    -
-

总结

通过本文的介绍,读者可以了解 Material Design 操作栏样式自定义的最佳方法,包括在布局文件中定义操作栏、在主题文件中定义样式、在代码中设置操作栏样式等操作。读者可以根据应用的需要自由自在地设计操作栏样式,提高应用的用户体验和美观程度。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64abc1cc48841e9894795c97


猜你喜欢

  • 深入探究 ES8 中的 Array.prototype.some() 方法并在项目中使用它

    介绍 在 JavaScript 中,数组是一种常见的数据类型。为了更加方便地操作数组数据,ES8 中提供了一个新的数组方法,即 Array.prototype.some()。

    1 年前
  • 基于 LitElement 和 Custom Elements 实现的表格组件

    在前端开发中,表格组件是十分常见的一种 UI 组件。本文将介绍如何使用 LitElement 和 Custom Elements 实现一个可复用的表格组件,并提供示例代码进行演示。

    1 年前
  • RxJS 异步编程及多个异步请求的处理技巧

    在前端开发中,异步编程是必不可少的一部分,而 RxJS 是一个流行的库,能够帮助开发者简化异步编程的操作。本文将介绍 RxJS 的使用以及如何处理多个异步请求。 RxJS 简介 RxJS 是一个响应式...

    1 年前
  • Sequelize 如何实现关系查询中的多级嵌套?

    Sequelize 是一款 Node.js ORM(Object-Relational Mapping)框架,它允许我们使用 JavaScript 进行数据的 CRUD(Create, Read, U...

    1 年前
  • 日常使用 Next.js 的常见问题和解决方案

    前言 Next.js 是一款基于 React 的服务端渲染框架,它可以让我们构建高效、交互性能好的 Web 应用。在实际开发过程中,我们可能会遇到一些常见的问题,本文将详细介绍这些问题及其解决方案,并...

    1 年前
  • 前端代码规范之 ESLint

    如今,前端技术的飞速发展已经成为人们关注的热点之一。在开发中,代码规范已经成为一个不可忽视的问题。正确的规范不仅能够让代码更加易于阅读和维护,而且还能够提高开发效率和降低代码出错的可能性。

    1 年前
  • Express.js 中使用 PM2 进行进程管理的操作指南

    在 Express.js 中,我们可以使用 PM2 进行进程管理,PM2 是一个流行的 Node.js 进程管理工具。通过 PM2,我们可以轻松地启动、停止、重启和监控我们的应用程序。

    1 年前
  • Hapi.js:创建基于 JWT 的身份验证

    随着 Web 开发变得越来越普及,身份验证已经成为了一个必须考虑的安全问题。传统的基于 cookie 和 session 的身份验证方式已经开始被基于 token 的身份验证方式所代替。

    1 年前
  • Web Components 实践指南:组件的跨浏览器兼容性实现

    什么是 Web Components? Web Components 是 W3C 的一个规范,用于将页面分解为可重用的功能块,以实现更好的模块化和可维护性。这个规范包含了三个主要部分: 自定义元素(...

    1 年前
  • Tailwind CSS 实践篇:表格样式的快速构建

    Tailwind CSS 是一个功能强大的 CSS 框架,能够帮助开发者快速构建各种样式,适用于多种应用场景。在前端开发中,表格是一个常见的组件,但是样式设计却往往比较繁琐。

    1 年前
  • 解决基于 Enzyme 的单元测试失败问题

    Enzyme 是 React 中广泛使用的一种 JavaScript 测试实用工具,它可以帮助开发者编写可读性强、易于维护的单元测试。但是,在实际应用中,我们可能会遇到一些 Enzyme 单元测试失败...

    1 年前
  • LESS 中变量名和类名相同导致编译失败的问题解决方法

    LESS 是一种 CSS 预处理器,它可以让我们在编写 CSS 样式的时候使用变量、函数、嵌套等功能,方便了前端开发人员的工作。但是,当我们在 LESS 中误将变量名和类名定义为相同的名称时,会导致编...

    1 年前
  • # Koa 应用程序中的错误跟踪技术指南

    Koa 应用程序中的错误跟踪技术指南 前言 Koa 是一个 Node.js 的轻量级 Web 框架,由 Express 的原班人马打造,适用于开发可扩展的网络应用程序。

    1 年前
  • 如何使用 ECMAScript 2020 的 Dynamic Import 实现无视拆分点的代码分离

    在大型 web 应用程序中,代码分离是一种重要的技术,可以将应用程序拆分为更小、更快的块,可以更快地加载应用程序,从而提高应用程序的性能。ES2020 的 dynamic import 是一种新的技术...

    1 年前
  • 如何使用 CSS Grid 实现圆形布局网格

    CSS Grid 是一种强大的前端布局方法,可以用来实现各种复杂的布局效果。在本文中,我们将介绍如何使用 CSS Grid 实现圆形布局网格,以及它的一些用途和指导意义。

    1 年前
  • 使用 Mocha 测试框架测试 AngularJS 应用程序!

    使用 Mocha 测试框架测试 AngularJS 应用程序! AngularJS 是一个流行的前端框架,非常适合大型 Web 应用程序的开发。然而,随着 Web 应用程序的规模不断增大,它们也变得越...

    1 年前
  • Mongoose 中实现多种查找方式

    Mongoose 是一个 Node.js 应用程序与 MongoDB 数据库交互的实用工具,它提供了丰富的功能和方便的 API,可以轻松地从应用程序中进行对数据库的操作,包括CRUD操作和查询功能等。

    1 年前
  • Vue.js 中常用的指令

    Vue.js 是一个流行的前端框架,它包含了许多指令,可以帮助我们更好地管理和控制页面数据。本文将介绍 Vue.js 中常用的指令,内容详细且有深度和指导意义,并提供相关示例代码。

    1 年前
  • 解决 Cypress 访问站点时遇到的 ERR_TOO_MANY_REDIRECTS 错误

    在使用 Cypress 进行自动化测试时,有时会遇到 ERR_TOO_MANY_REDIRECTS 错误,这通常是由于站点的重定向导致的。本文将介绍如何解决这个问题,包括如何定位问题,并提供示例代码进...

    1 年前
  • 如何在 MongoDB 中开启日志

    如何在 MongoDB 中开启日志 MongoDB 是一种常用的 NoSQL 数据库,它的优势在于灵活性和可扩展性。在开发和维护 MongoDB 应用程序时,我们需要注意数据库日志的开启,以便实时了解...

    1 年前

相关推荐

    暂无文章