我有一个editText被禁用,我想在触摸它时启用它。
这是我所做的,但是不起作用:
if(textmail.isEnabled() == false){
textmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textmail.setEnabled(true);
return true;
}
});
}
答案 0 :(得分:1)
我仔细阅读了您的用例,您想禁用TextView并希望禁用它onTouch()(如果我错了,请纠正我)
这是一个解决方案,而不是像设置setEnabled()
那样使用onTouch()
,因此,通过在(View / activity / fragment /类)编写逻辑的地方。
//this as global variable
private boolean isTextViewDisabled=false;
//place this code on onCreate()
textmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN ){
if(isTextViewDisabled){
return false;
}
}
return true;
}
});
根据使用情况在需要时将isTextViewDisabled设置为true
和false
。
但是这里的混乱是启用和禁用的条件,应该是touch event
以外的其他条件,根据您的用例代码,应如下所示:
//place this code on onCreate()
textmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN ){
if(isTextViewDisabled){
isTextViewDisabled=false;
}
}
return true;
}
});
在您解释为什么要禁用textView之前,上面的代码没有多大意义
答案 1 :(得分:0)
尝试这个,希望对您有帮助
textmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(textmail.isEnabled() == false){
textmail.setEnabled(true);
}
return true;
}
});
答案 2 :(得分:0)
如果禁用编辑文本,它将不会触发事件,即 onTouch / onClick 。为了解决此问题,您需要避免使用禁用,而应使用clickable。 textmail.setClickable(false);
在您的onCreate方法中。
要使该组件看起来像已被禁用,您还可以使用Alpha值来减少该组件的不透明度以使其褪色。
textmail.setAlpha(0.5f);
现在它应该响应您的听众...
textmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textmail.setClickable(true);
textmail.setAlpha(1f);
return false;
}
});