未输入

已经输入

code 未完善(文字图标未 对齐 光标在图标左边 提示文字右边 通过空格实现(需计算距离 填充hint的空格)) xml请填充
drawableLeft 标签
package com.rkt.thirddemo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
public class MyEditView extends androidx.appcompat.widget.AppCompatEditText {
private Drawable leftDrawable;
private int leftWidth;
private int compoundPaddingTop;
private int compoundPaddingLeft;
private boolean drawLeft=true;
private float textPx=0;
public MyEditView(Context context) {
super(context);
init();
}
public MyEditView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyEditView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init (){
leftDrawable =getCompoundDrawables()[0];
leftWidth = leftDrawable.getIntrinsicWidth();
compoundPaddingTop = getCompoundPaddingTop();
compoundPaddingLeft = getCompoundPaddingLeft();
setCompoundDrawables(null,null,null,null);
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length()==0){
drawLeft=true;
}else {
drawLeft=false;
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public static int dip2px(Context context, float dpValue) {
final float scale =context.getResources().getDisplayMetrics().density;
return(int) (dpValue * scale + 0.5f);
}
@Override
protected void onDraw(Canvas canvas) {
int x=getScrollX() + getPaddingLeft();
int y=getScrollY() + getPaddingTop();
if(leftDrawable!=null && drawLeft){
canvas.save();
canvas.translate( x, y);
leftDrawable.draw(canvas);
canvas.restore();
}
canvas.translate(0, (leftWidth-textPx)/2-y);
super.onDraw(canvas);
}
}
本文介绍如何在Android中实现EditTextView的提示文本带有图标的功能。内容涉及到图标与文字的对齐问题,以及光标位置调整,通过计算并填充空格来确保提示文字与图标正确对齐。
1482

被折叠的 条评论
为什么被折叠?



