Material Design 中自定义 EditText 的实现方式

· 约 8 分钟读完

Material Design 是 Google 推出的一种全新的设计语言,旨在为移动端和 Web 应用程序提供一种更加统一和美观的设计风格。其中,EditText 是应用程序中最常用的控件之一,用于接收用户的输入。在 Material Design 中,EditText 的样式也得到了全新的设计,本文将介绍如何自定义 EditText 实现 Material Design 的样式。

1. 基本样式

Material Design 中的 EditText 样式可以分为三个部分:边框、提示文字和输入文字。下面我们来逐一实现这三个部分。

1.1 边框样式

Material Design 中的 EditText 边框样式为一个矩形框,四个角是圆角。我们可以通过自定义 Drawable 实现这个效果。具体实现方式如下:

  1. 在 res/drawable 目录下新建一个 xml 文件,命名为 edittext_border.xml。
  2. 在 edittext_border.xml 中添加如下代码:

其中,corners 标签设置圆角半径,stroke 标签设置边框宽度和颜色。这里我们将圆角半径设置为 4dp,边框宽度设置为 1dp,边框颜色设置为 @color/border_color。

  1. 在 res/values/colors.xml 文件中定义 border_color:

这样我们就完成了 EditText 的边框样式的自定义。接下来我们将实现提示文字和输入文字的样式。

1.2 提示文字样式

Material Design 中的 EditText 的提示文字样式为浅灰色,当 EditText 获得焦点时,提示文字会上移并变为深灰色。我们可以通过设置 EditText 的 hint 和 hintTextColor 属性实现这个效果。具体实现方式如下:

  1. 在 res/values/colors.xml 文件中定义 hint_color 和 hint_focus_color:
  1. 在 res/layout 目录下的 xml 文件中添加 EditText 控件,并设置 hint 和 hintTextColor 属性:

其中,textColor 属性设置输入文字颜色为 @color/text_color。

  1. 在 Java 代码中监听 EditText 的焦点变化,当 EditText 获得焦点时,改变提示文字的颜色和位置:

其中,translationY 方法用于改变控件的 Y 轴位置,setDuration 方法设置动画持续时间。这样我们就完成了提示文字样式的自定义。

1.3 输入文字样式

Material Design 中的 EditText 的输入文字样式为黑色,当 EditText 获得焦点时,输入文字会上移并变为深灰色。我们可以通过设置 EditText 的 textColor 属性和监听 EditText 的焦点变化实现这个效果。具体实现方式如下:

  1. 在 res/values/colors.xml 文件中定义 text_color 和 text_focus_color:
  1. 在 res/layout 目录下的 xml 文件中添加 EditText 控件,并设置 textColor 属性:
  1. 在 Java 代码中监听 EditText 的焦点变化,当 EditText 获得焦点时,改变输入文字的颜色和位置:

这样我们就完成了输入文字样式的自定义。

2. 深度和学习意义

本文介绍了如何自定义 EditText 实现 Material Design 的样式,通过深入学习 Material Design,我们可以更好地设计和开发应用程序,提升用户体验。同时,本文也介绍了一些常用的 Android 开发技巧,如自定义 Drawable、使用属性动画等,对于 Android 开发者来说也具有一定的指导意义。

3. 示例代码

完整的示例代码可以在我的 GitHub 仓库中找到:https://github.com/zhangkaiyuan/material-design-edittext。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d27000a941bf71344931a6