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
                  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 を実装し、メソッドをオーバーライドする必要があります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 に答える