最近项目需求要用到带删除按钮的搜索框,开始设计时搜索图标及提示文字是在左侧的,但是经讨论要求与IOS的UISearchBar风格一致即默认情况下,搜索图标和文字是居中的,在获取焦点时,图标及提示文字左移,输入搜索文字时,删除按钮右端显示,如下图所示:
默认情况:
获取焦点时:
输入文字后:
首先直接自定义SearchEditText:
@SuppressLint("AppCompatCustomView")
public class SearchEditText extends EditText implements View.OnFocusChangeListener, TextWatcher {
private static final String TAG = "SearchEditText";
/**
* 删除按钮与右边编辑框之间的paddingRight距离
*/
private int paddingRightValueBetweenRightBorderAndDel = 0;
/**
* 图标是否默认在左边
*/
private boolean isIconLeft = false;
/**
* 控件的图片资源
*/
private Drawable[] mDrawables;
/**
* drawableLeft:搜索图标; drawableDel:删除按钮图标
*/
private Drawable drawableLeft, drawableDel;
/**
* 记录点击坐标
*/
private int eventX, eventY;
/**
* 控件区域
*/
private Rect mRect;
public SearchEditText(Context context) {
super(context);
init();
}
public SearchEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public SearchEditText(Context context, AttributeSet attrs,