首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不使用库的情况下同时在聚焦状态和正常状态下应用TextInputLayout的自定义形状

在不使用库的情况下,可以通过自定义形状来同时在聚焦状态和正常状态下应用TextInputLayout。

首先,需要在布局文件中使用TextInputLayout和TextInputEditText来创建输入框。然后,通过设置TextInputLayout的background属性来定义输入框的背景形状。

在聚焦状态下,可以使用XML的selector来定义不同状态下的背景形状。创建一个名为"custom_text_input_layout_focused.xml"的文件,内容如下:

代码语言:txt
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true">
        <shape android:shape="rectangle">
            <!-- 自定义聚焦状态下的背景形状 -->
            <!-- 可以设置边框颜色、边框宽度、背景颜色等 -->
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <!-- 自定义正常状态下的背景形状 -->
            <!-- 可以设置边框颜色、边框宽度、背景颜色等 -->
        </shape>
    </item>
</selector>

然后,在TextInputLayout中引用这个selector文件作为背景,如下所示:

代码语言:txt
复制
<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_text_input_layout_focused">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/text_input_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入内容" />

</com.google.android.material.textfield.TextInputLayout>

这样,当输入框处于聚焦状态时,会应用"custom_text_input_layout_focused.xml"中定义的聚焦状态下的背景形状;当输入框处于正常状态时,会应用"custom_text_input_layout_focused.xml"中定义的正常状态下的背景形状。

注意:以上示例中使用了Google的Material Design库中的TextInputLayout和TextInputEditText,如果不使用库,可以自行实现类似的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

再不迁移到Material Design Components 就out啦

MDC取代了设计支持库。本指南将向您展示如何迁移代码库,以便您可以使用新的属性,样式和小部件。 精简的主题示例 本指南使用了精简的应用程序来演示迁移过程。...它使用AppCompat主题,设计支持库中的小部件(包括具有自定义背景的按钮)以及需要迁移的各种其他元素。...下面这几种情况应该考虑 在布局中写的控件如果有对应的 MDC 控件的话,直接使用 MDC 控件 任何的风格,默认风格和默认风格属性应该改变成 MDC 版本 在编程中或者自定义类的父级类使用的任何控件都应该为...默认情况下,所有的 MDC 控件都将此可绘制对象当做背景,我们也可以考虑将它用作自定义 View 的背景。它可以处理形状主题、阴影、黑色主题等等。 因此。... 使用 `corner family` 和 `size` 来自定义 shape 我们可以选择在应用主题中覆盖形状样式来表达我们自己的品牌

3.2K30

labelme:图像数据标注

使用 3.1. 命令行运行 # 确保已经激活虚拟环境 labelme 3.2. 程序主界面 运行上面命令后,正常情况下,会出现下面窗口。...3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。 2d状态下:创建矩形,通过点击或者快捷键即可运行。...selected)状态,内部也会填充颜色,同时在标签列表窗口处也会显示标签选中状态。...当标注脱离悬浮状态(unhovered)或者未选中状态(unselected)时,内部会显示不填充。对选中的标注形状即可进行一系列操作,如拖动标注形状,删除,更改等动作。...)radius代表画刷形状的大小或者圆形形状的大小;width代表矩形的宽;height代表矩形的高;zspan代表3d长方体在z方向上的跨度 程序中使用标签列表窗口显示标签,且在点击标签时,中心窗口会同步标注形状被选中

4.7K30
  • labelme:图像数据标注

    使用3.1. 命令行运行# 确保已经激活虚拟环境labelme3.2. 程序主界面运行上面命令后,正常情况下,会出现下面窗口。...3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。Open Dir:打开文件夹,通过点击或者快捷键即可运行。...)状态,内部也会填充颜色,同时在标签列表窗口处也会显示标签选中状态。...当标注脱离悬浮状态(unhovered)或者未选中状态(unselected)时,内部会显示不填充。对选中的标注形状即可进行一系列操作,如拖动标注形状,删除,更改等动作。...)radius代表画刷形状的大小或者圆形形状的大小;width代表矩形的宽;height代表矩形的高;zspan代表3d长方体在z方向上的跨度程序中使用标签列表窗口显示标签,且在点击标签时,中心窗口会同步标注形状被选中

    1.9K20

    强大的提示控件TextInputLayout使用以及源码分析

    使用和TextInputLayout源码分析两个方面对这个强大的控件进行分析。...TextInputLayout的使用 这里使用TextInputLayout简单写一个登录的界面 布局代码 同时new了一个TextPaint来进行文本的绘制,然后是new出来3个矩形区域,mCollapsedBounds:输入框处于折叠状态下的矩形区域,mExpandedBounds:提示框获得焦点,提示文字向上展开的矩形区域...,mCurrentBounds:当前状态下的矩形区域;往下是一大堆set方法,然后有一个setExpandedBounds方法 void setExpandedBounds(int left, int...calculateBaseOffsets()方法,用于计算基本的偏移量,注意注释的内容:在计算折叠状态下的文字大小,也使用同样的逻辑 final int collapsedAbsGravity = GravityCompat.getAbsoluteGravity

    1.8K50

    安卓软件开发:用Java和Kotlin构建MDC-UI框架实现LoginUI(基础)

    MDC提供了多种精美和实用的界面组件,让开发者快速构建现代化的应用界面。在本项目中,利用MDC框架实现一个登录页面,详细展示开发过程中的技术细节和遇到的问题。...难点:MDC是Google官方提供的组件库,版本经常更新,不同版本之间存在很多不兼容性的问题,特别是和其他库(如 AndroidX、Kotlin 扩展)混合使用。...3.2 Fragment导航和状态管理 难点:Fragment 导航过程中需要输入的状态和避免重复创建 Fragment 实例。错误的导航实现导致应用崩溃或导航异常。...可以使用 ViewModel 保存用户输入的状态,在 Fragment 之间共享数据。 3.3 输入验证与用户体验 难点:实现用户输入验证时,需要保证错误提示的实时性和准确性。...3.4 混合语言开发(Java、Kotlin) 难点:在项目中使用 Kotlin 和 Java 混合开发时,经常会遇到很多语言互操作性的问题,如 Kotlin 的空安全和Java传统空指针处理的冲突。

    449101

    TextInputLayout-Android M新控件

    在Google I/O 2015期间,安卓团队发布了一个崭新的兼容库,Design Support Library。它简直就是为解决这个问题而生的。...其中一种就是写一个自定义的方法然后在xml中通过onClick属性指定,我喜欢setOnClickListener的方式,但这只是个人喜好。...不幸的是,如果你不告诉它,安卓不会自动的隐藏虚拟键盘。在onClick方法体中调用hideKeyboard。...TextInputLayout只是一个容器,但是和LinearLayout和ScrollView不同,你可以使用一个特殊的方法获得子元素,getEditText,不需要使用findViewById。...设计范例中,控件的实现需要让用户在输入的过程中不会丢失上下文信息,它是在去年跟Material Design一起被谷歌介绍的。在这之前,没有让开发者将这个控件应用到实际项目中的支持库。

    77920

    Material Design Compoents 1.1.0

    出现了新的规范、准则和新的组件,来更好的代表品牌同时保持了 Material 的核心原则。MDC 的目的是为开发者提供一个库,该库通过代码形式来实现这些组件和准则。...Material Theming Material Theming 可以让你更好的自定义 Material Design 来体现我们的品牌、颜色、字体和形状的选择。...MDC 1.1.0 在您的 Android 应用中启用 Material Theming 。...所有组件都支持通过主题、样式、新属性和自定义类(比如:MaterialShapeDrawable) 来调整其颜色、字体和形状。...默认情况下 colorSurface android:colorBackground 使用深灰而不是黑色来减轻眼睛疲劳,使高程度更明显,并确保与文本和其他元素形成适当的对比度。

    1.1K10

    Android – Drawable 详解

    Drawable用于定义形状,颜色,边界,渐变等,然后将其应用于Activity中的View。 这通常用于自定义显示在特定View。...用法 在不同情况下有很多可绘制的类型,设置按钮的状态行为,创建可伸缩的按钮背景和创建复合可绘制图层。...使用纯色形状和渐变,我们可以自定义按钮,布局和其他视图的外观,而不需要使用任何图片。请注意,可以使用PathShape和ArcShape在运行时创建自定义形状。...LayerList可以用来绘制多个其它的drawable(形状,图像等),并将它们放置在相互之间的关系中。默认情况下,图层被放置在另一个的顶部,最后一个图层被绘制在顶部。...Button 创建自定义按钮需要至少组合一个drawable的状态列表和一个drawable的形状。

    5.4K50

    Axure RP8入门之基本操作篇

    ## 第一章 使用元件 ### 1. 添加元件到画布 在左侧元件库中选择要使用的元件,按住鼠标左键不放,拖动到画布适合的位置上松开。 ### 2....### 15.设置文本框回车触发事件 文本框回车触发事件是指在文本框输入状态下按键,可以触发某个元件的【鼠标单击时】事件。...### 18.设置自定义形状 在形状上点击,在菜单中选择【转换为自定义形状】,即可对形状进行编辑。也可以通过点击形状右上角的圆点图标,在打开的形状选择列表中选择【转换为自定义形状】。...### 30.载入元件库 除了使用软件自带的默认元件库与流程图元件库,用户还可以加载自定义元件库。加载自定义元件库只需点击功能图标,在列表中选择【载入元件库】。...### 46.关闭/恢复功能面板 面板可以在弹出状态下点击【×】将其关闭,也可以在【视图】-【功能区】菜单中进行关闭或开启。如果需要将功能区所有面板恢复默认。

    5.3K30

    Yolo实用指南(step by step)之二labelme进行数据标注

    在机器学习和神经网络中,关于猫狗的识别就像各语言的hello world一样,我也不例外,神经网络是一种监督学习方法,预想取之必先与之,所以首先是数据标注,通过labelme进行数据标注,将图片和标签进行关联...3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。 Prev Image :切换至上一张图片,若无上一张图片,会弹出窗口提醒用户,通过点击命令或者快捷键即可运行。...3d状态下会切换当前聚焦视角的图片,可通过鼠标点击切换聚焦视角。 Open Dir:打开文件夹,通过点击或者快捷键即可运行。...3d状态下:创建长方体,通过在任意视角的图片点击即可开始该视角下的矩形框的绘制,再次点击鼠标该视角下矩形框即绘制完毕,这时在其他视角,可以通过右键聚焦视角,并进行图片的切换,当其他视角下有最开始创建的矩形框时...Edit Polygons:进入编辑状态,通过点击或者快捷键即可运行。点击后会进入编辑状态,在该状态下,可以对标注进行拖动,选中,撤销,重做,放大缩小等一系列操作。

    2.5K20

    Android Material Design系列之主题样式介绍说明等

    今天这篇文章应该算是Material Design系列的补充篇,因为这篇文章本来应该放到前面讲的,因为讲的是主题嘛,对于一些状态和颜色的介绍,因为我们一新建一个项目时,系统自带了三个属性的颜色,现在就重点介绍这三个颜色属性的意义和作用...colorPrimaryDark 是状态栏底色 colorPrimary 如果你不手动自己去修改toolbar背景色的话,它就是默认的toolbar背景色 colorAccent 各控制元件(比如:checkbox...这个也只能在API21以上才能用各控制元件的预设颜色和colorAccent正好对应 在Style上设置 以上的颜色属性均是在 style 的属性中设置。...TextInputLayout TextInputLayout继承LinearLayout,因此我们需要将EditView包含在TextInputLayout之内才可以使用,言外之意:TextInputLayout...里面可以包含一个且只能有一个EditText,与传统的EditText不同,在输入时EditText的hint提示文字会滑到上方,在用户输入的同时提示用户当前要输入的是什么,同时还可以设置输入错误的提示信息

    1.2K70

    Web端即时通讯实践干货:如何让WebSocket断网重连更快速?

    本文将基于笔者的开发实践,分享WebSocket在不同状态下、不同的网络状态下,应该如何实现快速断网重连。 ?...我们知道WebSocket底层是基于TCP协议传输数据的,连接两端分别是服务器和客户端,而TCP的TIME_WAIT状态是由服务器端维持的,因此在大多数正常情况下,应该由服务器发起断开底层TCP连接,而不是客户端...除此之外,还可以结合业务逻辑,根据成功重连上的可能性适当的调整间隔,如网络未连接时或应用在后台时重连间隔可以调大一些,网络正常的状态下可以适当调小一些等等,加快重连上的速度。...然后分别分析了在WebSocket的不同状态下、不同的网络状态下,如何快速完成这个三个步骤。...过程具体总结就是: 1)首先:通过定时发送心跳包的方式检测当前连接是否可用,同时监测网络恢复事件,在恢复后立即发送一次心跳,快速感知当前状态,判断是否需要重连; 2)其次:正常情况下由服务器断开旧连接,

    4.1K20

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

    同时还与View 存在一定的耦合,可以通过观察者模式通知 View 状态的改变来让view 更新。   ...View (视图层) 同时响应用户的交互行为并触发 Controller 的逻辑,View 还有可能修改Model 的状态 以使其与 Model 同步,View 还会在model 中注册 model 事件的改变...ViewModel:关联层,将Model和View进行绑定,只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。...View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开。...DataBinding数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。

    17K97

    Android5.0和6.0之后新增的控件说明

    为此,博主初步整理了Android在5.0和6.0之后的新增控件,及其对应的说明博文,给大家提供一个可资学习和借鉴的索引。...这个与系统版本有关,每个版本的android.jar是固定的,有在该内核中定义的控件才能正常调用,没在内核中定义的控件在运行时会扔出类找不到的异常。...使用v7与design库的控件,类似于使用自定义控件,不但要在布局文件中引用完整路径的控件名称,还要在根布局声明命名空间(即添加属性xmlns:app="http://schemas.android.com.../apk/res-auto"),然后方可使用这些控件的自定义属性。...库,所以若要正确使用design库的控件,往往得同时导入好几个相关的兼容库。

    1.3K20

    Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

    同时还与View 存在一定的耦合,可以通过观察者模式通知 View 状态的改变来让view 更新。   ...View (视图层) 同时响应用户的交互行为并触发 Controller 的逻辑,View 还有可能修改Model 的状态 以使其与 Model 同步,View 还会在model 中注册 model 事件的改变...ViewModel:关联层,将Model和View进行绑定,只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。...View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开。...DataBinding数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。

    2.7K32

    PowerBI 地图 - 形状地图最佳实践

    在某些情况下,要注意中国台湾,中国香港,中国澳门和南海诸岛都应该包括到地图里。...优化形状地图 这里的局部放大效果令人震撼,配合数据显示,将形状地图的交互性达到在 PowerBI 现有状态下的最佳搭配。...局部放大的思路是: 在大地图的左下角放置一个小地图,大地图在被点击时会同时筛选小地图,通过设置,我们保持大地图不变,并设置小地图自适应大小,就会出现放大效果。...同时将标签放置在小地图的上面。不过这里仍然有个超级技巧,当用户不选择任何地区时,小地图不显示;只有当用户选择了某个地区时小地图才显示,非常友好。...DATAV并转换为 PowerBI 可使用的形状数据 至此,我们就可以实现大部分地图可视化的需求,还有大家提出的层级下钻和自定义地图效果我们再聊。

    3.9K10

    Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    应用技术一),这篇也是上一篇的升级版,在我们日常写界面的时候,都想简单并且界面美观,这就少不了动画效果,MaterialDesign我们一般用到的动画,里面都有,不用我们自己写,在这个强大的库里,他都能够做什么呢...),很明显上面的效果图中的工具栏上滑的同时把图片折叠进去了,这是一个动画效果,如果不是MaterialDesign库的强大,这都是我们自己写。.../>  写到这里基本上完成了,代码少,效果好正是该库的强大,在Activity中的使用基本和上一篇是一样的。...2.1:布局书写 这里的布局和上面是一样的,只是把imageview换成了LinearLayout布局,在该布局中写上我们熟悉的输入框和图片按钮即可, 最外层-->里层还是:CoordinatorLayout...TextInputLayout是22.2.0新添加的控件, 要和EditText(或EditText的子类)结合使用,并且只能包含一个EditText(或EditText的子类)。

    1.6K100

    React 面试必知必会 Day11

    当你使用 setState() 时,当前和之前的状态被合并。replaceState() 抛出当前的状态,只用你提供的内容来替换它。...在最新的版本中,它已被弃用。 3. 在 React 状态下,删除数组元素的推荐方法是什么? 更好的方法是使用 Array.prototype.filter() 方法。...有没有可能在不渲染 HTML 的情况下使用 React 呢? 在最新版本(>=16.2)中可以实现。以下是可用选项。...React 的理念是,props 应该是「不可变的」和「自上而下」的。这意味着父组件可以向子组件发送任何 props 值,但子组件不能修改收到的 props。 7. 如何在页面加载时聚焦一个输入框?...Polyfill 服务:」 使用 polyfill.io CDN,通过在 index.html 中添加这一行来检索自定义的、针对浏览器的 polyfills。

    3.5K20

    开源图编辑库 NebulaGraph VEditor 的设计思路分享

    其中渲染流程为半自动渲染,改变流程图数据后需要手动触发渲染,其他状态下对画布进行操作会触发用户定义的 shape 渲染函数,完成自定义节点渲染节点或线渲染。...在形状渲染上,主要通过暴露出来的 Shape 接口注册用户的自定义渲染函数。...因此在使用 React 或 Vue 等虚拟 DOM 框架时,非常推荐用其管理 SVG 的渲染。甚至某些情况下可以包裹一个 Canvas 来渲染 WebGL 的节点,这非常大的拓展了业务中的定制性。...其中渲染流程为半自动渲染,改变流程图数据后需要手动触发渲染,其他状态下对画布进行操作会触发用户定义的 shape 渲染函数,完成自定义节点渲染节点或线渲染。...同时提供了自适应大小功能,在自适应后,不同于其他库,这里会将当前节点的坐标重置为自适应的位置,在用户保存当前数据,可以直接还原自适应的位置。

    1.3K20
    领券