最近在实现一个小功能,原味的EditText不能很好满足我的要求,故思变。以下是小生在网上搜罗资料之后进行揉和的结果。
读者若有更好的想法,请不吝赐教,将不胜感激!
首先:重写EditText
Java代码
//请在这里添加您的包名
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.util.AttributeSet;
importandroid.widget.EditText;
publicclassLineEditTextextendsEditText {
privatePaint mPaint;
publicLineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
mPaint = newPaint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.BLUE);
}
@Override
publicvoidonDraw(Canvas canvas)
{
super.onDraw(canvas);
// 画底线
canvas.drawLine(0,this.getHeight()-1,this.getWidth()-1,this.getHeight()-1, mPaint);
}
}
//请在这里添加您的包名
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 LineEditText extends EditText {
private Paint mPaint;
public LineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.BLUE);
}
@Override
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
// 画底线
canvas.drawLine(0,this.getHeight()-1, this.getWidth()-1, this.getHeight()-1, mPaint);
}
}
其次:设置LineEditText
Java代码
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:id="@+id/myEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="?android:attr/textViewStyle"
android:background="@null"
android:textColor="@null"
/>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:id="@+id/myEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="?android:attr/textViewStyle"
android:background="@null"
android:textColor="@null"
/>
其中background,可以设置成其他颜色等
textColor不一定要是null,可以设置字体颜色
最后:应用LineEditText
Java代码
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.graphics.Rect;
importandroid.os.Bundle;
importandroid.text.InputFilter;
importandroid.util.AttributeSet;
importandroid.widget.EditText;
publicclassLineEditTextTestextendsActivity {
privateEditText mEdit;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEdit=(LineEditText)findViewById(R.id.myEdit);
mEdit.setHint("从这里开始输入...");
mEdit.setSingleLine();
mEdit.setFilters(newInputFilter[]{newInputFilter.LengthFilter(20)});
}
}