2011-11-24 41 views
4

当文本为空时,我们要禁用按钮(这是如何设置肖像模式)任何想法?当使用imeOption = actionSend时,禁用发送按钮当EditText为空

编辑:我不认为这很清楚,但我可以启用/禁用我自己的按钮。但是,当使用横向模式时,当弹出键盘时,屏幕被自己的特定文本区域覆盖按钮(因此imeOption)所以我没有问题启用/禁用我有的按钮。这是这个Android按钮,我想禁用文本区域为空时..

+0

您可以设置可见View.INVISIBLE并在此改变onconfigurationChange重新设置其状态,如果你需要 –

+0

我如何获得一个句柄上发送按钮..这是一个OS呈现按钮。我认为屏幕是外我的活动范围.. –

+0

http://stackoverflow.com/questions/2979441/android-how-to-enable-my-button-back-if-edittext-is-not-empty – Synxmax

回答

12

添加一个TextChangedListener这将得到只要EditText内部的文本发生变化就会调用。

message.addTextChangedListener(new TextWatcher() { 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    public void afterTextChanged(Editable s) { 
     if (s == null || s.length() == 0) { 
      send.setEnabled(false); 
      message.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
     } 
     else { 
      send.setEnabled(true); 
      message.setImeOptions(/* whatever you previously had */); 
     } 
} 

或者,你也可以让你的班级实现TextWatcher接口,这使得代码更清洁一些。

public class MyDialogFragment implements TextWatcher { ... } 
+0

嘿,由于某种原因,这并没有工作,但它有点带领我走了正确的道路..我看到了该行动采取了该发送按钮,基本上什么也没做,如果文本字段为空 –

+0

这很可能你必须这样以某种方式触发刷新键盘,以使ime选项生效(隐藏并显示?)。另一个好的提示是在该字符串的临时副本上调用trim()(或使用删除空格的regax),然后检查长度 - 确保不发送只有空白的消息 – FunkTheMonk

+0

@FunkTheMonk就我而言了解你的答案,我可以使用'afterTextChanged()'来显示和隐藏软键盘上的'DONE'按钮。对?我也尝试禁用/启用'NEXT'按钮而没有成功。你会如何做到这一点? – JJD