18

重複の可能性:
EditTextの点滅カーソルを無効にする

アクティビティに2つのeditTextフィールドがあり、テキストが含まれています。

EditText nameText=(EditText) findViewById(R.id.update_name_text);
nameText.setText(Info.getName());

EditText phone=(EditText) findViewById(R.id.phone_number);
phone.setText(Info.getPhoneNo());

nameTextデバイスでアプリを実行してフィールドをタップすると、カーソルとキーボードが表示されます。ただし、キーボードを非表示にすると、キーボードは消えますが、カーソルは残ります。カーソルも非表示にするにはどうすればよいですか。

からEnterキーを押すnameTextと、カーソルがphoneフィールドに移動し、キーボードは引き続き表示されます。これで問題ありません。しかし、キーボードを非表示にするか、phoneフィールドからEnterキーを押すと、キーボードは消えますが、カーソルは残ります。

上記の状況でも(を使用する以外setOnEditorActionListenerに)カーソルを非表示にする方法はありますか?

4

3 に答える 3

40

編集テキストからカーソルを削除するには、設定する必要があります

nameText.setFocusable(false);

と表示カーソルセットに

nameText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                nameText.setFocusableInTouchMode(true);

                return false;
            }
});

カーソルをedittextで表示します...

于 2012-10-23T12:01:36.303 に答える
20

android:cursorVisibleXMLで、またはsetCursorVisible()カーソルを表示/非表示にするコードで、ここで説明する方法を使用して、キーボードがいつ表示および非表示になったかを判別できます。

于 2012-10-23T12:01:22.207 に答える
1

Xmlファイル<requestFocus>でEditTextの属性が自動的に追加されていることがわかります。

したがって、アクティビティが開始されるたびに、EditTextがフォーカスを受け取ります。

だから最初にそれを削除して試してみてください...

更新された回答:

nameTextフィールドを編集したくない場合

使用できます

nameText.setEnabled(false);

また、場合によっては編集したい場合は、

できるよ、

nameText.setEnabled(true);

nameTextそれでも、プログラムでフィールドを更新できます。

たとえば、を使用してnameText.setText(Info.getname());

表示されているテキストをユーザーに変更してもらいたい場合は、次のようにすることができます。

nameText.setEnabled(true);

期待どおりに動作します。

于 2012-10-23T12:07:41.720 に答える