ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android自定义EditText样式

2022-04-27 01:33:09  阅读:301  来源: 互联网

标签:xml 文件 定义 自定义 样式 EditText 标签 android


在android里面自定义 EditText 样式比 HTML中自定义 input 样式麻烦很多,而且灵活很多,关键看自己项目需求确定采用哪种方式更简单。

通常官方的默认样式跟实际项目的UI还是有很多大的差距的,这就需要我们慢慢来研究怎样修改达到项目的UI要求。

 

第一种:修改 EditText 的 theme 属性来修改默认的样式跟获得焦点的颜色。

在styles.xml文件里面创建一对<style></style>标签,并且给style标签设置 name 属性跟 parent 属性。

布局文件中的 editText:

<EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:theme="@style/myEditText"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:textColor="#999999"
            />

styles.xml文件中:

<style name="myEditText" parent="Theme.AppCompat.Light">
    <item name="colorControlNormal">#ADADAD</item>
    <item name="colorControlActivated">#2196F3</item>
</style>

修改默认的样式跟点击获得焦点后的样式。这里我为了方便直接写上颜色值,实际上还可以通过 @color/XXX 来进行颜色的引用,方便后续的管理。

 

第二种:通过 background 来引用修改样式

在drawables 文件夹下新建3个XML文件

这个XML文件是以selector标签开始的,在这个文件中定义了两种状态,一种是默认状态跟获得焦点时的状态分别引用了不同的XML文件,命名为 custom_editor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="false" android:drawable="@drawable/custom_edittext_normal"></item>
    <item android:state_focused="true" android:drawable="@drawable/custom_edittext_active"></item>
</selector>

custom_edittext_normal.xml 文件,以 shape 标签开始的文件。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="@color/colorPrimary" android:width="1dp"/>
    <corners android:radius="5dp" />
</shape>

custom_edittext_active.xml 文件,以 shape 标签开始的文件。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="@color/colorAccent" android:width="1dp"/>
    <corners android:radius="5dp" />
</shape>

这里记录一下shape标签内部属性值:

corners 定义圆角

gradient 定义渐变效果

padding 定义内边距

size 定义自定义的图形大小

solid 定义内部填充颜色

stroke 定义绘制边界

 

第三种:终极大招

通过 style 属性来实现  EditText 自定义样式。

布局文件:

<EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            style="@style/myCustomStyle"
            />

styles.xml 文件中添加

<style name="myCustomStyle">
        <item name="android:color">#2196F3</item>
        <item name="android:background">@drawable/custom_edittext</item>
        <item name="android:padding">10dp</item>
    </style>

在这个文件中通过定义的background属性实现 上文的第二种方式。

 

最最最重要的根据自己项目选择合适的方式去实现自定义样式,这里是我个人的一些总结。

 

标签:xml,文件,定义,自定义,样式,EditText,标签,android
来源: https://www.cnblogs.com/zsdblog/p/16197370.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有