首页
学习
活动
专区
工具
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的使用

Material Design是Google设计的一套视觉语言,将优先的经典的设计原理与科技创新相结合,为开发者提供一套完成视觉和交互设计规范。移动设备是这套设计语言的基础对象,让用户在不同的平台、不同尺寸的设备上能保持一致的体验。 Material Design强调交互上的即时反馈,即对于用户的触控等行为app需要给出即时的反应。同时Material Design要求应用给用户带入感,让用户在使用时是沉浸在当前的应用当中。例如Google给出了沉浸式状态栏等“工具”,希望通过改变StatusBar和NavigationBar来给用户更强的融入感,专注于应用本身提供的内容。 Google从动画、颜色、样式、触控反馈、布局等多个方面给出了Material Design的设计要求。无论是单一的控件还是图文布局,Google都给出了明确的设计说明,有兴趣的同学可以去上方提到的官方链接处做进一步了解。

03

Android开发笔记(一百三十八)文本输入布局TextInputLayout

TextInputLayout是MaterialDesign库中对编辑框EditText进行增强的一个控件。众所周知,EditText未输入字符时,我们可以给它显示默认的提示文字hint;可是一旦输入字符,这个hint提示就消失了,虽然没有提示也没有什么大碍,但有总比没有好呀。TextInputLayout便是用来解决提示文字的显示问题,它默认把提示文字显示在编辑框的上方,这样在编辑框内输入文字,就不影响上方的提示文字了。 代码中使用TextInputLayout要进行以下改造: 1、添加几个库的支持,包括design库(TextInputLayout需要)、appcompat-v7库(AppCompatActivity); 2、编辑框所在页面的Activity需要继承自AppCompatActivity,否则运行时打开页面会报错; 3、布局文件中在TextInputLayout节点下面加入EditText控件,必须并且只能加入一个EditText; 下面是TextInputLayout新增的方法说明: setHint : 设置提示文字的内容。 setHintEnabled : 设置提示文字是否可用。 setHintTextAppearance : 设置提示文字的风格。 setHintAnimationEnabled : 设置提示文字的展示动画是否可用。 setError : 设置错误文字的内容。 setErrorEnabled : 设置错误文字是否可用。 setCounterEnabled : 设置文字计数器是否可用。 setCounterMaxLength : 设置文字计数器的最大长度。 从以上方法可以看到,TextInputLayout增加的界面元素主要是三个,分别是位于编辑框左上角的提示文字、位于编辑框左下角的错误文字、位于编辑框右下角的文字计数器。具体的文本输入布局效果如见下:

03

老司机带你走进Core Animation 之几种动画的简单应用

之所以要写这几种简单应用呢,是为了帮大家扩展一下思维,基于CAAnimation和CADisplayLink其实我们可以做到很多事情,不过我们都还是需要一个思路。有的时候可能,拿到一个效果,我们一眼就可以看出来,哦,使用核心动画就可以搞定,然而真正上手的时候就会发现,哦,没有想象的那么简单,为什么我达到的效果不对呢?一般情况下有两种可能,要么是思路不完整,要么是思路根本就不对。CAAnimation固然灵活,但要是使用方法不当的话,也会事倍功半。所以呢,今天老司机就针对以下几种情况来介绍截个动画的实现方式。(说这么多其实就是因为这段时间一直研究这个,的确也没研究别的,哈哈哈)

02
领券