编辑框工具类 类名称:EditText_U

本文详细介绍了编辑框工具类的功能实现与使用方法,包括添加编辑框、按钮交互、清空文本、软键盘控制等核心功能。适用于需要在应用程序中高效管理多个编辑框场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/******************************************
 * 类描述: 编辑框工具类 类名称:EditText_U
 * 
 * @version: 1.0
 * @author:zm
 * @time: 2014
 ******************************************/


public class EditText_U {


private SparseArray<EditText> editTexts;
private SparseArray<ImageButton> imageButtons;
/** 默认长度为8,以8的倍数递增 16, 32 */
private int INDEXS[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
private int index;


/** 处理ListView滚动为EditText设置值问题 */
private boolean lock;


private EditText_U() {
}


private static class MInstance {
/** 网络请求对象 */
private final static EditText_U EDITTEXT = new EditText_U();
}


public static EditText_U newInstance() {
EditText_U editText_U = new EditText_U();
editText_U.editTexts = new SparseArray<EditText>();
editText_U.imageButtons = new SparseArray<ImageButton>();
return editText_U;
}


public static EditText_U getInstance() {
MInstance.EDITTEXT.index = 0;
MInstance.EDITTEXT.editTexts = new SparseArray<EditText>();
MInstance.EDITTEXT.imageButtons = new SparseArray<ImageButton>();
return MInstance.EDITTEXT;
}


/**
* 向容器中添加EditText对象

* @param editText
* @param imageButton
* @param index
* @return void
*/
public void addEditText(EditText editText, ImageButton imageButton) {
if (INDEXS.length < index + 2) {
INDEXS = new int[INDEXS.length << 1];
for (int i = 0; i < INDEXS.length; i++) {
INDEXS[i] = i;
}
}
editTexts.put(INDEXS[index], editText);
imageButtons.put(INDEXS[index], imageButton);
index++;
}


/**
* 初始化编辑框clear功能

* @return void
*/


public void initClearEditText() {
final SparseArray<EditText> sparseArray = editTexts;
final SparseArray<ImageButton> sparseArrayButtons = imageButtons;
final int size = sparseArray.size();
MOnTouchListener mOnFoucusChangedListener = new MOnTouchListener();
for (int i = 0; i < size; i++) {
EditText editText = sparseArray.get(INDEXS[i]);
ImageButton imageButton = sparseArrayButtons.get(INDEXS[i]);
if (imageButton != null) {
imageButton.setTag(editText);


imageButton.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText editText = (EditText) v.getTag();
editText.setText(null);
v.setVisibility(View.GONE);
}
});


if (i == 0 && editText != null
&& editText.getText().length() > 0) {
imageButton.setVisibility(View.VISIBLE);
} else if (imageButton.getVisibility() != View.GONE) {
imageButton.setVisibility(View.GONE);
}
}
if (editText != null) {
MTextWatcher mTextWatcher = new MTextWatcher();
mTextWatcher.index = i;
editText.addTextChangedListener(mTextWatcher);
editText.setOnTouchListener(mOnFoucusChangedListener);
}
}
}


/**
* 为按钮添加是否可点击逻辑处理

* @param view
* @return void
*/
public void setButtonOnEditTextChange(final View view) {
view.setEnabled(false);
final SparseArray<EditText> sparseArray = editTexts;
final SparseArray<ImageButton> sparseArrayButtons = imageButtons;
final int size = editTexts.size();
MOnTouchListener mOnFoucusChangedListener = new MOnTouchListener();
for (int i = 0; i < size; i++) {
EditText editText = sparseArray.get(INDEXS[i]);
ImageButton imageButton = sparseArrayButtons.get(INDEXS[i]);
if (imageButton != null) {
imageButton.setTag(editText);


imageButton.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText editText = (EditText) v.getTag();
editText.setText(null);
v.setVisibility(View.GONE);
}
});
}
if (editText != null) {
MTextWatcher mTextWatcher = new MTextWatcher();
mTextWatcher.index = i;
mTextWatcher.view = view;
editText.addTextChangedListener(mTextWatcher);
editText.setOnTouchListener(mOnFoucusChangedListener);
}
}
}


private class MTextWatcher implements TextWatcher {


private int index;
private View view;


@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub


}


@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub


}


@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub'
final int size = editTexts.size();
ImageButton mImageButton = imageButtons.get(INDEXS[index]);
if (lock) {
// EditText editText = editTexts.get(INDEXS[index]);
// if (editText.hasFocus()) {
// if (mImageButton.getVisibility() != View.VISIBLE) {
// mImageButton.setVisibility(View.VISIBLE);
// }
// } else
if (mImageButton != null
&& mImageButton.getVisibility() != View.GONE) {
mImageButton.setVisibility(View.GONE);
}
return;
}


if (mImageButton != null) {
if (s.length() > 0) {
for (int i = 0; i < size; i++) {
EditText editText = editTexts.get(INDEXS[i]);
if (editText.hasFocus()) {
if (mImageButton.getVisibility() != View.VISIBLE) {
mImageButton.setVisibility(View.VISIBLE);
break;
}
}
// else {
// continue;
// // if (mImageButton.getVisibility() != View.GONE) {
// // mImageButton.setVisibility(View.GONE);
// // }
// }
}
} else {
if (mImageButton.getVisibility() != View.GONE) {
mImageButton.setVisibility(View.GONE);
}
}
}


for (int i = 0; i < size; i++) {
EditText editText = editTexts.get(INDEXS[i]);
if (editText.getText().length() == 0) {
if (view != null) {
view.setEnabled(false);
}
return;
}
}
if (view != null) {
view.setEnabled(true);
}
}
}


private class MOnTouchListener implements OnTouchListener {


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() != MotionEvent.ACTION_UP) {
return false;
}
int size = editTexts.size();
for (int i = 0; i < size; i++) {
EditText editText = editTexts.get(INDEXS[i]);
if (editText == v && editText.getText().length() > 0) {
ImageButton mImageButton = imageButtons.get(INDEXS[i]);
if (mImageButton.getVisibility() != View.VISIBLE) {
mImageButton.setVisibility(View.VISIBLE);
}
} else {
ImageButton mImageButton = imageButtons.get(INDEXS[i]);
if (mImageButton.getVisibility() != View.GONE) {
mImageButton.setVisibility(View.GONE);
}
}
}
return false;
}
}


// private class MOnFoucusChangedListener implements OnFocusChangeListener {
// // private int index;
// private ImageButton mImageButton;
//
// @Override
// public void onFocusChange(View v, boolean hasFocus) {
// // TODO Auto-generated method stub
// // Log_U.SystemOut("onFocusChange-------->" + v);
// // Log_U.SystemOut("onFocusChange-------->" + hasFocus);
// if (mImageButton == null) {
// return;
// }
// if (hasFocus) {
// EditText editText = (EditText) v;
// if (mImageButton.getVisibility() != View.VISIBLE
// && editText.getText().length() > 0) {
// mImageButton.setVisibility(View.VISIBLE);
// }
// } else {
// if (mImageButton.getVisibility() != View.GONE) {
// mImageButton.setVisibility(View.GONE);
// }
// }
// }
// }


/**
* 触发某个输入框显示系统软键盘

* @param editText
* @return void
*/
@TargetApi(3)
public static void showSoftKeyBoardOnEditText(final View view) {
new Handler().postDelayed(new Runnable() {


@Override
public void run() {
// TODO Auto-generated method stub
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();
view.requestFocusFromTouch();
InputMethodManager inputManager = (InputMethodManager) view
.getContext().getSystemService(
Context.INPUT_METHOD_SERVICE);
inputManager
.showSoftInput(view, InputMethodManager.SHOW_FORCED);
}
}, 150);
}


/**
* 隐藏输入法软键盘

* @param context
* @return void
*/
@TargetApi(3)
public static void hiddenSoftKeyBoard(Context context) {
// InputMethodManager imm = (InputMethodManager) context
// .getSystemService(Context.INPUT_METHOD_SERVICE);
// imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
// ((Activity) context).getWindow().setSoftInputMode(
// WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
InputMethodManager inputMethodManager = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(0,
InputMethodManager.HIDE_NOT_ALWAYS);
}


/**
* 隐藏输入法软键盘

* @param view
* @return void
*/
@TargetApi(3)
public static void hiddenSoftKeyBoard(View view) {
// InputMethodManager imm = (InputMethodManager) context
// .getSystemService(Context.INPUT_METHOD_SERVICE);
// imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
InputMethodManager m = (InputMethodManager) view.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (view.getWindowToken() != null) {
m.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}


public void setLock(boolean lock) {
this.lock = lock;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值