2012-09-26 31 views
4

我试图捕获被禁用的edittext字段被按下时。 (我只想改变它,我不想插入到它的文本)。 我给它分配了一个onClickListener,但它没有被调用..任何建议? 有没有其他的活动我可以听?onClickListener禁用edittext未调用

final EditText field = column.get(i); 
field.setEnabled(false); 
field.setClickable(true); 
field.setFocusable(false); 
field.setFocusableInTouchMode(false); 

field.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ((EditText)v).setText("a"); 

      } 
     }); 

谢谢!

+0

'setClickable(真)'就是所谓的'setOnClickListener'和setFocusableInTouchMode'的'的处理在完成'setFocusable'。所以这两行并不是真的有必要 – Xavier

回答

4

View被禁用时,您无法通过点击事件。

因此,尝试改变:

field.setEnabled(false); 

要:

field.setEnabled(true); 
+0

试过了,仍然没有工作.. – Blondy314

+0

现在尝试用我的更新答案。确保你已经设置了'field.setFocusableInTouchMode(false);'这将不允许你的EditText提高软键盘 – waqaslam

+0

这没有什么窍门!谢谢! – Blondy314

0
final EditText field = column.get(i); 
field.setCursorVisible(false); 

field.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       field.setText("something"); 
       field.clearFocus(); 
      } 
     } 
    });