您的位置:首页 > 移动开发 > Android开发

Android--自定义带提示文本的EditText组件

2013-12-27 16:06 357 查看
效果图如下:



两个类,一个继承Activity的类,一个继承EditText的类,一个xml文件

继承Activity的类:

[html]

import android.app.Activity;

import android.os.Bundle;

public class EditTestActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.edittest);

}

}

继承EditText的类:

[html]

package com.mrzhu.edittest;

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 EditTextTest extends EditText {

public EditTextTest(Context context) {

super(context);

}

public EditTextTest(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public EditTextTest(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

Paint paint = new Paint();

paint.setTextSize(20);

paint.setColor(Color.GRAY);

canvas.drawText("输入提示文本:", 10, getHeight() / 2 + 5, paint);

super.onDraw(canvas);

}

}

edittext.xml文件:

[html]

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<com.mrzhu.edittest.EditTextTest

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:paddingLeft="100dp"

android:text="从此处输入文本"

android:id="@+id/test"

/>

</LinearLayout>

Android--动态添加控件

package com.mrzhu.edittest;

import android.app.Activity;

import android.os.Bundle;

import android.view.ViewGroup;

import android.widget.RelativeLayout;

public class EditTestActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//自定义的带提示文本的EditText组件

EditTextTest ed = new EditTextTest(this);

//设置从左边140px处开始输入文本

ed.setPadding(140, 0, 0, 0);

//装载一个布局文件,向这个布局中动态添加一个EditText

RelativeLayout relativeLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.main, null);

//创建一个LayoutParams对象

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

//设置android:layout_below属性的值

layoutParams.addRule(RelativeLayout.BELOW, R.id.button2);

//动态添加EditText

relativeLayout.addView(ed, layoutParams);

//设置布局

setContentView(relativeLayout);

}

}

自定义的EditText控件:

[html] www.2cto.com

package com.mrzhu.edittest;

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 EditTextTest extends EditText {

public EditTextTest(Context context) {

super(context);

}

public EditTextTest(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public EditTextTest(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onDraw(Canvas canvas) {

Paint paint = new Paint();

paint.setTextSize(20);

paint.setColor(Color.GRAY);

canvas.drawText("输入提示文本:", 10, getHeight() / 2 + 5, paint);

super.onDraw(canvas);

}

}

main.xml:

[html]

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/linearlayout"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal" >

<Button

android:id="@+id/button2"

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="150dp"

android:onClick="click"

android:text="Button" />

</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: