Android下EditText 添加字体下划线
2016-06-23 17:28
621 查看
其实也就是通过edittext 内容行数在绘制一条线
控制光标高度可以自定一个 shape:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<size
android:width="2dip" />
<solid
android:color="#d0d0d0" />
<padding
android:top="2sp"
android:bottom="-11sp" />
</shape>
在edittext 里面 加入引用自定义的shape : android:textCursorDrawable="@drawable/cursor_red"
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;
public class UnderlineEditText extends InnerSrollViewEditText {
private static final String TAG = "UnderlineEditText";
private Paint mPaint;
private Rect mRect;
private float mult = 1.5f;
private float add = 2.0f;
private boolean isShowUnderLine = true;
public UnderlineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public UnderlineEditText(Context context) {
super(context);
init();
}
private void init() {
mRect = new Rect();
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.GRAY);
mPaint.setAntiAlias(true);
this.setLineSpacing(add, mult);
}
@Override
public void onDraw(Canvas canvas) {
Log.d(TAG, "func [onDraw]");
//控制是否显示下划线
if (isShowUnderLine) {
int count = getLineCount();
String content = getText().toString().trim();
for (int i = 0; i < count; i++) {
getLineBounds(i, mRect);
int baseline = 0;
if (TextUtils.isEmpty(content)) {
baseline = (i) * getLineHeight();
}else{
baseline = (i + 1) * getLineHeight();
}
canvas.drawLine(mRect.left, baseline-5, mRect.right, baseline-5, mPaint);
}
}
super.onDraw(canvas);
}
public void setIsShowUnderLine(boolean flag){
isShowUnderLine = flag;
}
}
控制光标高度可以自定一个 shape:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<size
android:width="2dip" />
<solid
android:color="#d0d0d0" />
<padding
android:top="2sp"
android:bottom="-11sp" />
</shape>
在edittext 里面 加入引用自定义的shape : android:textCursorDrawable="@drawable/cursor_red"
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.EditText;
public class UnderlineEditText extends InnerSrollViewEditText {
private static final String TAG = "UnderlineEditText";
private Paint mPaint;
private Rect mRect;
private float mult = 1.5f;
private float add = 2.0f;
private boolean isShowUnderLine = true;
public UnderlineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public UnderlineEditText(Context context) {
super(context);
init();
}
private void init() {
mRect = new Rect();
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.GRAY);
mPaint.setAntiAlias(true);
this.setLineSpacing(add, mult);
}
@Override
public void onDraw(Canvas canvas) {
Log.d(TAG, "func [onDraw]");
//控制是否显示下划线
if (isShowUnderLine) {
int count = getLineCount();
String content = getText().toString().trim();
for (int i = 0; i < count; i++) {
getLineBounds(i, mRect);
int baseline = 0;
if (TextUtils.isEmpty(content)) {
baseline = (i) * getLineHeight();
}else{
baseline = (i + 1) * getLineHeight();
}
canvas.drawLine(mRect.left, baseline-5, mRect.right, baseline-5, mPaint);
}
}
super.onDraw(canvas);
}
public void setIsShowUnderLine(boolean flag){
isShowUnderLine = flag;
}
}
相关文章推荐
- android开源图表库MPAndroidChart
- APK 与 Android Native Service 通信
- android屏幕投影到pc
- Android工具类系列-NetUtil
- Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
- 通过Android Studio查看SDK源码
- Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
- Android工具类系列-KeyBoardUtil
- Android 摇一摇太灵敏的解决方法
- android亮屏解锁demo
- Android进程间通信(三):使用Messenger实现进程间通信
- Android重要的组件--Intent
- android 调试工具ADB命令详解
- android 调试工具ADB命令详解
- 基础总结篇之二:Activity的四种launchMode
- android获取内存信息
- Android工具类系列-SDCardUtil
- MPAndroidChart之lineChart中的诡异属性
- 语言名称客制化问题
- android 使用多个接口