android中EditText点击右边叉叉按钮(或图片)清除输入框内的文字的实现

基本思路:
1.在Edittext右边添加一个有着叉叉背景能的Button(或图片);
2.根据Edittext的情况进行判断Button(或图片)是否要显示或隐藏.

先看效果:

 

 

布局:

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.edittextclearbutton.MainActivity" >

    

        

        

 

 


主要功能的实现我抽成出了一个工具类:

package com.example.edittextclearbutton;

import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
/**
 * @author JWfine
 * 
 * 用于实现点击叉叉时  ,  清空输入框的内容
 *
 */
public class EditTextUtils {
	public static void clearButtonListener(final EditText et, final View view) {
		// 取得et中的文字
		String etInputString = et.getText().toString();
		// 根据et中是否有文字进行X可见或不可见的判断
		if (TextUtils.isEmpty(etInputString)) {
			view.setVisibility(View.INVISIBLE);
		} else {
			view.setVisibility(View.VISIBLE);
		}
		//点击X时使et中的内容为空
		view.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				et.setText("");
				et.requestFocusFromTouch();
			}
		});
		//对et的输入状态进行监听
		et.addTextChangedListener(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) {
				if (s.length() == 0) {
					view.setVisibility(View.INVISIBLE);
				} else {
					view.setVisibility(View.VISIBLE);
				}
			}
		});
	}
}

使用:
MainActivity:

 

package com.example.edittextclearbutton;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		EditText et1 = (EditText) findViewById(R.id.et1);
		EditText et2 = (EditText) findViewById(R.id.et2);
		View bt = findViewById(R.id.bt);
		View iv = findViewById(R.id.iv);
		
		EditTextUtils.clearButtonListener(et1, bt);
		EditTextUtils.clearButtonListener(et2, iv);
	}
}

 

你可能感兴趣的:(Android)