首页
学习
活动
专区
工具
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.1K30

labelme:图像数据标注

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

1.7K20

labelme:图像数据标注

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

4.5K30

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

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

1.7K50

TextInputLayout-Android M新控件

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

74920

Android – Drawable 详解

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

5.3K50

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

Axure RP8入门之基本操作篇

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

5.1K30

Android使用TextInputLayout创建登陆页面

就如你知道,这个属性允许你EditText内容为空时候显示一个自定义提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息上下文提示。...其中一种就是写一个自定义方法然后xml中通过onClick属性指定,我喜欢setOnClickListener方式,但这只是个人喜好。...不幸是,如果你告诉它,安卓不会自动隐藏虚拟键盘。onClick方法体中调用hideKeyboard。...TextInputLayout只是一个容器,但是LinearLayoutScrollView不同,你可以使用一个特殊方法获得子元素,getEditText,不需要使用findViewById。...设计范例中,控件实现需要让用户输入过程中不会丢失上下文信息,它是去年跟Material Design一起被谷歌介绍。在这之前,没有让开发者将这个控件应用到实际项目中支持

1.6K10

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

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

2K20

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

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

3.7K20

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

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

1.2K70

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

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

14.8K86

Android5.06.0之后新增控件说明

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

1.2K20

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

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

2.3K32

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

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

3.8K10

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.4K20

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

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

1.3K20
领券