我为EditText设置了可绘制的权限,如下所示,
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_clear_black_24dp), null);
我在XML中为EditText设置了drawable。我想将其可见性设置为可见或隐藏。如何以编程方式进行设置。
我有用于搜索的EditText。开始输入时,我以编程方式设置了清除图标。
清除图标将清除EditText中的文本。单击没有文本的清除图标时,我想关闭键盘并隐藏清除图标。下面是我的代码,
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setCursorVisible(true);
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_clear_black_24dp), null);
}
});
editText.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
if(editText.getCompoundDrawables()[2]!=null){
if(event.getX() >= (editText.getRight()- editText.getLeft() - editText.getCompoundDrawables()[2].getBounds().width())) {
if(!editText.getText().toString().equals("")) {
editText.setText("");
}
else {
// getWindow().setSoftInputMode(
// WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
closeKeyboard();
editText.setCursorVisible(false);
}
}
}
}
return false;
}
});
我想以编程方式将其隐藏。
请onTouchListener
如下更改您的。与其寻找捕捉ACTION_UP
go的方法,ACTION_DOWN
不如onTouch
先从那里开始return true
,现在我们不需要onClick
关闭键盘。
editText.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
if(editText.getCompoundDrawables()[2]!=null){
if(event.getX() >= (editText.getRight()- editText.getLeft() - editText.getCompoundDrawables()[2].getBounds().width())) {
if(!editText.getText().toString().equals("")) {
editText.setText("");
}
else {
// getWindow().setSoftInputMode(
// WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
closeKeyboard();
editText.setCursorVisible(false);
return true;
}
}
}
}
return false;
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句