0

我有一个 EditText,它只接受这样定义的数字:

<EditText android:id="@+id/routeInit_price" 
    android:layout_height="wrap_content"
    android:layout_width="120dp"
    android:layout_gravity="center_horizontal"
    android:lines="1"
    android:inputType="numberDecimal"/>

我正在验证是否有像下面这样的有效输入来启用/禁用按钮。但是,我没有收到有关退格/删除按钮按下事件的事件。我该如何解决?因为当 EditText 为空时,按钮应该被禁用。

EditText priceField = (EditText)findViewById(R.id.routeInit_price);
priceField.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
            if(keyEvent.getAction() == KeyEvent.ACTION_UP)
            {
                if(((EditText)view).getText().toString().length() > 0)
                    ready.setEnabled(true);

                else
                    ready.setEnabled(false);
            }

            return false;
        }
});
4

4 回答 4

1

试试这个

priceField.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if(priceField.getText().toString().length() > 0)
                ready.setEnabled(true);

            else
                ready.setEnabled(false);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
于 2013-08-07T11:01:45.420 回答
0

您需要实现自己的 EditText 并覆盖该方法onKeyPreIme()

@Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
                        // Do whatever you want to here.
            return true;
        }
        return false;
    }
于 2013-08-07T10:50:25.823 回答
0
          <EditText
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:digits="0123456789"
                  android:scrollHorizontally="true"
                  android:singleLine="true"
                  android:textSize="14sp" />
于 2013-08-07T10:56:24.193 回答
0

您需要像这样修改代码:

EditText priceField = (EditText)findViewById(R.id.routeInit_price);

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            if(priceField.getText().toString().length() > 0)
                return super.onKeyDown(keyCode, event);
            else
                return true;
        }
        return false;
    }
});
于 2013-08-07T10:56:30.270 回答