0

開発者リファレンスには、OnKeyListener がハードウェア キー イベントに対してのみ機能することが記載されています。

「ハードウェア キー イベントがこのビューにディスパッチされたときに呼び出されるコールバックのインターフェイス定義。キー イベントがビューに与えられる前にコールバックが呼び出されます。これはハードウェア キーボードにのみ役立ちます。ソフトウェア入力メソッドには義務はありません。このリスナーをトリガーします。」

しかし、ソフトキーボードでそれをトリガーする方法があるかどうか疑問に思っていましたか? 一部のデバイスでトリガーされることは知っていますが、一貫性がありません。

4

1 に答える 1

0

更新 2013
年 9 月 12 日 私の古い回答は一部のソフト キーボードでのみ機能し、他のソフト キーボードでは機能しなかったようです。代替案を探してみましたが、一貫して機能するものは見つかりませんでした。最後に、カスタムキーボードを作成しました。幸いなことに、キーボードに数字が必要だったので、簡単に作成できました。カスタムキーボードの作成方法については、このガイドに従いました。
http://www.fampennings.nl/maarten/android/09keyboard/index.htm

古い回答
私は周りを検索しましたが、ソフトキーボードの onKeyListener でキーをリッスンする方法がないようです。ただし、 EditText を拡張して onKeyUp() をオーバーライドすることはできましたが、これは正常に機能します。

public class CustomEditText extends EditText
{
    public CustomEditText(Context context)
    {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
        // Intercept keys here
        return super.onKeyUp(keyCode, event);
    }
}
于 2013-08-19T23:41:23.197 に答える