2

TextField (libgdx の scene2d ui 要素) リスナーに登録する Android の「削除」キーを取得できません。テキストフィールドを定義するコードは次のとおりです。

    nameTextfield = new TextField("", skin);
    nameTextfield.setMessageText("Some Text");

    uiStage.addActor(nameTextfield);

DELETE キーのキーコードをデコードするためだけに、このリスナーを試しました。

    nameTextfield.setTextFieldListener(new TextFieldListener() {
        public void keyTyped (TextField textField, char key) {
            textField.setText(String.valueOf(Integer.valueOf(key)));

        }
    });

ほとんどすべてのボタンのコードを提供しますが、DELETE ボタンにも反応しません。

これを Nexus 7 でテストしました。

4

4 に答える 4

2

TextField.javaソースからは、「DELETE」(および「BACKSPACE」、「TAB」およびその他のいくつかのキー)がTextFieldによって特別に処理されているように見えます。これらのキーがリスナーに転送されることはありません。

組み込みのハンドラーは「正しいこと」を実行する必要があります(文字列の内容から文字を削除します)。

削除をデコードしようとする何らかの方法で、削除が正しく動作していませんか?

于 2013-01-21T00:16:04.510 に答える
0

DELETE ボタンは別の方法で実装する必要があります。

押されたキーが DELETE ボタンであるかどうかを確認することをお勧めします。そうである場合は、 を実行しtextField.getText()、最後の文字を切り取り、 で新しいテキストを設定しますsetText

これを行うためのはるかにエレガントな方法があると確信していますが、それが私が考えることができる唯一の回避策です。結局のところ、 DELETE は、実際には char 内でスローできるものではありませんsetText。それは...ですか?:/

後で編集:

リスナー内のkey変数を出力し、そこにブレークポイントを置き、それに割り当てられている値を確認します。

次に、印刷 (または javadoc を確認) KeyEvent.KEYCODE_DEL(ドキュメントはこちら) して、これがどのような値になるかを確認します。

于 2013-01-20T23:12:00.060 に答える
0

この問題は libgdx の最新のナイトリー バージョンで解決されています。この問題は既知であり、次のリンクで説明されています: nexus ボタン

于 2014-01-27T08:45:05.010 に答える