Android--自定义带提示文本的EditText组件
2013-12-27 16:06
357 查看
效果图如下:
![](http://up.2cto.com/2013/0217/20130217093552520.png)
两个类,一个继承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>
![](http://up.2cto.com/2013/0217/20130217093552520.png)
两个类,一个继承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>
相关文章推荐
- Android--自定义带提示文本的EditText组件
- Android--自定义带提示文本的EditText组件
- Android自定义View实现文本轮播效果
- 自定义Android中EditText中的Hint文本的大小
- 自定义Jquery插件——由于项目需要,对页面中过长的文本进行截取,鼠标移上去有一个title的提示,所以做了一个Jquery过长文本处理的插件
- 自定义ANDROID中EDITTEXT中的HINT文本的大小
- Android自定义的RatingBar,星级评论,带提示文本框还能输入多少字。
- Android 自定义toast总结:纯文本,带图像,带标题栏及自定义背景文字颜色
- Android自定义的webView——可实现的网页文本的复制
- 自定义ANDROID中EDITTEXT中的HINT文本的大小
- Android 自定义文本标签
- Android 6.0 设备上自定义文本操作栏
- 学习Android,最简单的按钮提示文本信息
- Android自定义Seekbar滑动条 Pop提示跟随滑动按钮滑动
- Android中ArrayAdapter在自动提示文本中的使用
- android--------自定义Dialog之信息提示
- Android 自定义一个可以展开显示更多的文本布局
- 自定义ANDROID中EDITTEXT中的HINT文本的大小
- Android自定义无下划线ClickableSapn超链接文本样式
- 【Android】 XML布局文件中,使用自定义属性不提示和不生效