EditText 监听事件 - litonghui/TechBlog GitHub Wiki
Android 开发中 EditText 输入监听
相关代码
public class EditTextActivity extends Activity {
public static final String TAG = "EditTextActivity";
private Context mContext;
private EditText mEditText;
private ImageView mCleanView;
private String mEditMsg;/*动态记录EditText 内容*/
private InputMethodManager mInputMg;/*调取键盘*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edittext);
init();
}
private void init() {
mContext = this;
mInputMg = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mCleanView = (ImageView) findViewById(R.id.search_clean);
mCleanView.setVisibility(View.GONE);
mCleanView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mEditText.setText(null);
mEditMsg = null;
}
});
mEditText = (EditText) findViewById(R.id.search_input);
/* 聚焦 */
mEditText.requestFocus();
/* 调用软键盘 */
mEditText.postDelayed(new Runnable() {
@Override
public void run() {
mInputMg.hideSoftInputFromWindow(mEditText.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 100);
/* 检测输入内容 */
mEditText.addTextChangedListener(new TextWatcher() {
/*private TextWatcher mEditText = new TextWatcher(){* //*可用通过接口使用*/
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
mEditMsg = s.toString();/* 动态获取EditText 内容 */
if (!TextUtils.isEmpty(mEditMsg)) {
mCleanView.setVisibility(View.VISIBLE);
} else {
mCleanView.setVisibility(View.GONE);
}
/* 获取输入相关内容 */
if (TextUtils.isEmpty(s.toString())) {
}else {
Toast.makeText(mContext, "正在加载相关内容。。。", 2000).show();
/*可以从服务器上获取输入关键字相关的内容,一下拉列表形式显示*/
}
}
});
/* 监听输入状态 */
mEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == 0 && event.getAction() == KeyEvent.ACTION_DOWN) {
Toast.makeText(mContext, "正在查找。。。", 2000).show();
return true;
}
return false;
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
添加相关的xml
<RelativeLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="36dp"
android:layout_centerVertical="true"
android:descendantFocusability="afterDescendants" >
<ImageView
android:id="@+id/search_clean"
android:layout_width="33dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="0dp"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/search_cancel" />
<EditText
android:id="@+id/search_input"
android:layout_width="fill_parent"
android:layout_height="36dp"
android:background="@null"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:imeOptions="actionSearch"
android:inputType="text"
android:maxLength="20"
android:singleLine="true"
android:textCursorDrawable="@null"
android:textSize="15sp" />
</RelativeLayout>