在应用程序开发中,经常要对android控件进行自定义来实现界面的风格统一,对网上的资源进行搜索整理如下:
自定义edittext
一, 通过改变背景图片来实现edittext的自定义
(1) 在drawable里添加my_edittext.xml 代码如下:
[xhtml]
view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/edit1" />
<item android:drawable="@drawable/edit" />
</selector>
注:正常状态时背景图片为edit,而edit1为edittext为编辑状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/edit1" />
<item android:drawable="@drawable/edit" />
</selector>
注:正常状态时背景图片为edit,而edit1为edittext为编辑状态
(2) 在value文件下添加 my_edittext_style.xml代码如下:
<resources>
<style name="suretouch_edittext_style" parent="@android:style/widget.edittext">
//引入drawable下的my_edittext.xml文件
<item name="android:background">@drawable/my_edittext</item>
</style>
</resources>
<resources>
<style name="suretouch_edittext_style" parent="@android:style/widget.edittext">
//引入drawable下的my_edittext.xml文件
<item name="android:background">@drawable/my_edittext</item>
</style>
</resources>
(3)在自己的布局文件中加入自定义样式就完成了。
<edittext
android:id="@+id/admin_email"
android:layout_width="461dip"
android:layout_height="48dip"
style="@style/my_edittext_style"
/>
<edittext
android:id="@+id/admin_email"
android:layout_width="461dip"
android:layout_height="48dip"
style="@style/my_edittext_style"
/>
使用上面方式实现的搜索框,布局文件如下:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="260dip">
<edittext
android:id="@+id/findedittext"
android:layout_alignparenttop="true"
android:singleline="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入查询的类容"/>
<imageview
android:id="@+id/findbutton"
android:src="@drawable/findbutton"
android:layout_width="wrap_content"
android:layout_marginbottom="4dip"
android:layout_marginright="2dip"
android:adjustviewbounds="true"
android:layout_aligntop="@id/findedittext"
android:layout_alignright="@id/findedittext"
android:layout_alignbottom="@id/findedittext"/>
</relativelayout>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="260dip">
android:id="@+id/findedittext"
android:layout_alignparenttop="true"
android:singleline="true"
android:layout_height="wrap_content"
android:hint="请输入查询的类容"/>
<imageview
android:id="@+id/findbutton"
android:src="@drawable/findbutton"
android:layout_width="wrap_content"
android:layout_marginbottom="4dip"
android:layout_marginright="2dip"
android:adjustviewbounds="true"
android:layout_aligntop="@id/findedittext"
android:layout_alignright="@id/findedittext"
android:layout_alignbottom="@id/findedittext"/>
</relativelayout>
drawable中的xml文件
[c-sharp]
<item android:state_pressed="true" android:drawable="@drawable/find0" />
<item android:state_focused="true" android:drawable="@drawable/find1" />
<item android:state_enabled="true" android:drawable="@drawable/find1" />
</selector>
<item android:state_pressed="true" android:drawable="@drawable/find0" />
<item android:state_focused="true" android:drawable="@drawable/find1" />
<item android:state_enabled="true" android:drawable="@drawable/find1" />
图片
二,自定义edittext的边框
(1)创建自定义myedittext类
package com.util;
import android.content.context;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.paint;
import android.util.attributeset;
import android.widget.edittext;
public class myedittext extends edittext {
private paint mpaint;
private context mcontext;
public myedittext(context context) {
super(context);
}
// public myedittext(context context, attributeset attrs, int defstyle) {
// super(context, attrs, defstyle);
// // todo auto-generated constructor stub
// }
//
public myedittext(context context, attributeset attrs) {
super(context, attrs);
mcontext=context;
// todo auto-generated constructor stub
//定义画笔
mpaint = getpaint();
//定义笔画粗细样式
mpaint.setstyle(paint.style.fill_and_stroke);
//定义笔画颜色
mpaint.setcolor(color.gray);
public void ondraw(canvas canvas){
super.ondraw(canvas);
int w = getwidth();
int h = getheight();
//下划线
// canvas.drawline(0,h-1, w-1, h-1, mpaint);
//下边框
canvas.drawline(0, h, w, h, mpaint);
//右边框
canvas.drawline(w, 0, w, h, mpaint);
//左边框
canvas.drawline(0, 0, 0, h, mpaint);
//上边框
canvas.drawline(0, 0, w, 0, mpaint);
}
package com.util;
import android.content.context;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.paint;
import android.util.attributeset;
import android.widget.edittext;
public class myedittext extends edittext {
private paint mpaint;
private context mcontext;
public myedittext(context context) {
super(context);
}
// public myedittext(context context, attributeset attrs, int defstyle) {
// super(context, attrs, defstyle);
// // todo auto-generated constructor stub
// }
//
public myedittext(context context, attributeset attrs) {
super(context, attrs);
mcontext=context;
// todo auto-generated constructor stub
//定义画笔
mpaint = getpaint();
//定义笔画粗细样式
mpaint.setstyle(paint.style.fill_and_stroke);
//定义笔画颜色
mpaint.setcolor(color.gray);
public void ondraw(canvas canvas){
super.ondraw(canvas);
int w = getwidth();
int h = getheight();
//下划线
// canvas.drawline(0,h-1, w-1, h-1, mpaint);
//下边框
canvas.drawline(0, h, w, h, mpaint);
//右边框
canvas.drawline(w, 0, w, h, mpaint);
//左边框
canvas.drawline(0, 0, 0, h, mpaint);
//上边框
canvas.drawline(0, 0, w, 0, mpaint);
(2)在布局文件中直接引用自定义控件
//注意这里 如果不行<view class="com.util.myedittext">
<com.util.myedittext
android:id="@+id/register_password"
android:layout_width="461dip"
android:layout_height="48dip"
android:layout_x="398dip"
android:layout_y="353dip"
android:password="true"
style="?android:attr/textviewstyle"
android:background="@null"
android:textcolor="@null"
>
//注意这里 如果不行<view class="com.util.myedittext">
<com.util.myedittext
android:id="@+id/register_password"
android:layout_x="398dip"
android:layout_y="353dip"
android:password="true"
style="?android:attr/textviewstyle"
android:background="@null"
android:textcolor="@null"
图
三,按钮按下效果,非常简单同样是使用selector
(1) 在drawable中的xml文件中,代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"
android:drawable="@drawable/register_up" />
<item android:state_pressed="true"
android:drawable="@drawable/register_down" />
<item android:state_focused="true"
<item android:drawable="@drawable/register_up" />
<item android:state_pressed="false"
android:drawable="@drawable/register_up" />
<item android:state_pressed="true"
android:drawable="@drawable/register_down" />
<item android:state_focused="true"
<item android:drawable="@drawable/register_up" />
(2) imagebutton在xml布局文件中的代码:
<imagebutton
android:id="@+id/register_btn"
android:src="@drawable/suretouch_register_button"
android:layout_width="158dip"
android:layout_height="149dip"
android:layout_x="893dip"
android:layout_y="270dip"
android:scaletype="centercrop"
android:background="@null"
<imagebutton
android:id="@+id/register_btn"
android:src="@drawable/suretouch_register_button"
android:layout_width="158dip"
android:layout_height="149dip"
android:layout_x="893dip"
android:layout_y="270dip"
android:scaletype="centercrop"
分享到: