安卓_重写Edittext,画边框

本文介绍了如何在Android中为EditText组件添加边框,包括通过自定义组件重写onDraw方法、使用9-patch图以及XML方式。同时,详细解析了去除EditText周围橙色高亮区域的步骤,涉及查找系统资源和替换背景图片。
摘要由CSDN通过智能技术生成

Android系统本身提供的EditText组件并不支持边框,但可以对edittext进行扩展来添加边框。我们可以使用如下两种方法为组件添加边框。

1.  编写一个继承EditText类的自定义组件,并在onDraw事件方法中画边框。

2.  使用9-patch格式的图像作为TextView的背景图来设置边框(这个背景图需要带一个边框)。

3.使用xml的方式

onDraw事件方法中画边框非常容易,只需要画EditText组件的上、下、左、右四个边即可。这个自定义组件的代码如下:

public class BorderTextView extends EditText {
		
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		Paint paint = new Paint();
		// 将边框设为黑色
		paint.setColor(android.graphics.Color.BLACK);
		paint.setStrokeWidth(1);
		// 画TextView的4个边
		canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);
		canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);
		canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1,
				this.getHeight() - 1, paint);
		canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1,
				this.getHeight() - 1, paint);
		setBackgroundColor(Color.TRANSPARENT);				
	}

	private Paint mPaint;

	public BorderTextView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		mPaint = new Paint();

		mPaint.setStyle(Paint.Style.STROKE);
		mPaint.setColor(Color.GREEN);
		
      setBackgroundColor(Color.TRANSPARENT);//透明背景

	}

	public BorderTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
		mPaint = new Paint();

		mPaint.setStyle(Paint.Style.STROKE);
		mPaint.setColor(Color.GRAY); 
		setBackgroundColor(Color.TRANSPARENT);//背景透明
	}

 
}

这样我们的输入框的边框就有自己想要的的原色了,之所以这么弄,是因为在动态添加输入框时候。

安卓没提供相应的接口去改变输入框边框的颜色,大小。


2.

虽然可以直接使用带边框的图像作为组件的背景来设置边框,但当EditTextView的大小变化时,背景图像上的边框也随之变粗或变细,这样看起来并不太舒服。为了解决这个问题,可以采用9-patch格式的图像来作为 EditText组件的背景图。我们可以使用<Android SDK安装目录>\tools\draw9patch.bat命令来启动“Draw 9-patch”工具。制作9-patch格式的图像也很简单,将事先做好的带边框的png图像(必须是png格式的图像)用这个工具打开,并在外边框的上方和左侧画一个象素点,然后保存即可,如图1所示。9-patch格式的图像必须以9.png结尾,例如,abc.9.png。在生成完9-patch格式的图像后,使用<EditText>标签的android:background属性指定相应的图像资源即可。

                             1



3.如果只是固定的一个。那么有下面的方法

第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这么做了),代码如下:

 

[html]  view plain copy
  1. <EditText   
  2.     android:layout_width="fill_parent"  
  3.         android:layout_height="36dip"  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值