私は編集テキストを持っています。その edittext に、ユーザーが何らかのテキストを入力します。ユーザーがスペース キーを押したときに、何らかのアクションを実行する必要があります。どうすればいいですか。
前もって感謝します。
私は編集テキストを持っています。その edittext に、ユーザーが何らかのテキストを入力します。ユーザーがスペース キーを押したときに、何らかのアクションを実行する必要があります。どうすればいいですか。
前もって感謝します。
ユーザーがスペースキーを押したときに何かを行うには、次を使用します-
if((event.getAction()==KeyEvent.ACTION_DOWN)&&(key == KeyEvent.KEYCODE_SPACE)){
//put your code for whatever you what to do when the user presses space here
}
}
EditText でスペース キーをインターセプトする際の問題
複数の編集テキストがある場合は、上記のコードに
if (edittext.hasFocus()){
//do something for particular edit text
}
edittext が機能しない理由はわかっていると思います。edittext がフォーカスされている (選択されている) 場合、キー クリックはアクティビティをバイパスし、edittext に直接移動します。これを解決するには、 を edittext の に移動する必要がありonKeyListener
ますonKeyListener
。
代わりに以下のコードを試してください
edittext.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int key, KeyEvent event) {
if (event.getAction()==KeyEvent.ACTION_DOWN && key == KeyEvent.KEYCODE_ENTER) {
//operation that you want on key press
return true;
}
return false;
}
});
これが役立つことを願っています
TextWatcher
EditTextに使用する方が良いと思います。この方法で実装できます
EditText et = (EditText)findViewById(R.id.ed1);
et.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after)
{
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,
int start, int before, int count)
{
System.out.println(s);
if(s.toString().equals(" "))
{
Toast.makeText(getApplicationContext(), "Space is clicked", Toast.LENGTH_LONG).show();
}
}
});