Как проверить клавиши на виртуальной клавиатуре на Android? - PullRequest
0 голосов
/ 22 апреля 2010

Я хочу, чтобы всплывающее сообщение отображало «Ввод только цифровых символов» всякий раз, когда пользователь нажимает нецифровую клавишу на виртуальной клавиатуре. Любая подсказка?

Ответы [ 3 ]

1 голос
/ 22 апреля 2010

или используйте android: inputType = "number" в вашем XML-файле. Это позволит вам вводить только цифры. См. «Структура метода ввода» в книге Марка Мерфи или выполните поиск на сайте разработчика.

1 голос
/ 22 апреля 2010

Вы можете настроить TextWatcher и обработать каждый символ, используя событие onTextChanged (), пока пользователь вводит и игнорирует нежелательные символы в качестве пользовательских.

Это не очень хороший дизайн пользовательского интерфейса, чтобы постоянно выскакивать сообщения пользователю при каждом нажатии клавиши, вместо этого вы можете просто сообщить об этом в руководстве или введении.

0 голосов
/ 07 мая 2010

Поскольку для виртуальной клавиатуры событие недоступно, я нашел способ проверить клавиши с помощью события TextChanged. Вот как я это сделал:

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class ShowKeypad extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        EditText emailTxt = (EditText) findViewById(R.id.editText);

        emailTxt.addTextChangedListener(new TextWatcher()
        {
                public void  afterTextChanged (Editable s){ 
                        Log.d("seachScreen", "afterTextChanged"); 
                } 
                public void  beforeTextChanged  (CharSequence s, int start, int 
                        count, int after)
                { 
                        Log.d("seachScreen", "beforeTextChanged"); 
                } 
                public void  onTextChanged  (CharSequence s, int start, int before, 
                        int count) 
                { 
                        Log.d("seachScreen", s.toString()); 
                }

        final TextView tv = (TextView)findViewById(R.id.tv);
        /*emailTxt.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) { 
                //Log.i("Key Value", String.valueOf(keyCode)); 
                //Toast.makeText(ShowKeypad.this, String.valueOf(keyCode), Toast.LENGTH_SHORT);
                Log.i("Key Value:", String.valueOf(keyCode));

                return true;
                }; });*/

        }); 
    }

}

Есть лилучший способ проверить?Пожалуйста, оставьте свой отзыв.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...