Android文本框搜索和清空效果实现代码及简要概述
Android文本框搜索和清空效果实现代码及简要概述
发布时间:2016-12-28 来源:查字典编辑
摘要:前言本文实现的效果:文本框输入为空时显示输入的图标;不为空时显示清空的图标,此时点击清空图标能清空文本框内输入文字。正文一、实现效果二、实现...

前言

本文实现的效果:文本框输入为空时显示输入的图标;不为空时显示清空的图标,此时点击清空图标能清空文本框内输入文字。

正文

一、实现效果

Android文本框搜索和清空效果实现代码及简要概述1

Android文本框搜索和清空效果实现代码及简要概述2

二、实现代码

绑定事件

复制代码 代码如下:

private Drawable mIconSearchDefault; // 搜索文本框默认图标

private Drawable mIconSearchClear; // 搜索文本框清除文本内容图标

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main)

final Resources res = getResources();

mIconSearchDefault = res.getDrawable(R.drawable.txt_search_default);

mIconSearchClear = res.getDrawable(R.drawable.txt_search_clear);

mSearchView = (EditText) findViewById(R.id.txtSearch);

mSearchView.addTextChangedListener(tbxSearch_TextChanged);

mSearchView.setOnTouchListener(txtSearch_OnTouch);

}

触摸事件

复制代码 代码如下:

private OnTouchListener txtSearch_OnTouch = new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_UP:

int curX = (int) event.getX();

if (curX > v.getWidth() - 38

&& !TextUtils.isEmpty(mSearchView.getText())) {

mSearchView.setText("");

int cacheInputType = mSearchView.getInputType();// backup the input type

mSearchView.setInputType(InputType.TYPE_NULL);// disable soft input

mSearchView.onTouchEvent(event);// call native handler

mSearchView.setInputType(cacheInputType);// restore input type

return true;// consume touch even

}

break;

}

return false;

}

};

复制代码 代码如下:

//监听输入

/**

* 动态搜索

*/

private TextWatcher tbxSearch_TextChanged = new TextWatcher() {

//缓存上一次文本框内是否为空

private boolean isnull = true;

@Override

public void afterTextChanged(Editable s) {

if (TextUtils.isEmpty(s)) {

if (!isnull) {

mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,

null, mIconSearchDefault, null);

isnull = true;

}

} else {

if (isnull) {

mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,

null, mIconSearchClear, null);

isnull = false;

}

}

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

}

/**

* 随着文本框内容改变动态改变列表内容

*/

@Override

public void onTextChanged(CharSequence s, int start, int before,

int count) {

}

};

代码说明:

1.为输入框绑定触摸事件(模拟点击事件捕捉)。通过监听点击区域判断是否点击清空图片,如果在该区域并且文本框不为空,则清空文本框。

2.为输入框绑定文本改变事件监听,根据内容改变动态设置图标显示。

3.维持清空操作后软键盘状态。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类