1、重写EdiText类,下面是一个逐条显示下划线的Editext
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.Gravity; import android.widget.EditText; public class MyEditText extends EditText{ public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { float lineHeight = this.getLineHeight(); Paint mPaint = getPaint(); mPaint.setColor(Color.GRAY); float topPadding =this.getPaddingTop(); float leftPadding = this.getPaddingLeft(); float textSize = getTextSize(); setGravity(Gravity.LEFT|Gravity.TOP); float y= (float) (topPadding + textSize); for(int i=0; i<getLineCount(); i++) { canvas.drawLine(leftPadding, y+10, getRight()-leftPadding, y+10, mPaint); //前四个参数的类型均为float,最后一个参数类型为Paint。 //表示用画笔paint从点(startX,startY)到点(stopX,stopY)画一条直线; y+=lineHeight; } canvas.translate(0, 0); super.onDraw(canvas); } /** * 设置记事本的编辑框背景线条颜色 * @param color int type【代表颜色的整数】 */ public void setBGColor(int color) { invalidate(); } /** * 设置记事本的编辑框背景线条颜色 * @param colorId int type【代表颜色的资源id】 */ public void setBGColorId(int colorId) { getResources().getColor(colorId); invalidate(); } }
2、在layout文件添加自定义的EditText控件:
<com.example.edit.MyEditText android:id="@+id/tv_state" android:layout_width="match_parent" android:layout_height="278dp" android:background="#00000000" android:focusable="true" android:gravity="top" android:hint="@string/note" android:textSize="25dp" />
3、(1)设置光标的位置android:gravity="top" ,默认在中间那行
(2)Edittext设置圆角边框:新建shape.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00ff00ff"/> <corners android:radius="8px"/> <stroke android:color="#32CD32" android:width="2px" /> </shape>
为Editext设置背景:
android:padding="10dip" //不然光标会和边框挤在一起
android:background="@drawable/shape"