android自定义EditText样式
在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属性实现 上文的第二种方式。
最最最重要的根据自己项目选择合适的方式去实现自定义样式,这里是我个人的一些总结。