从editText中删除光标

时间:2012-10-23 11:57:58

标签: android

  

可能重复:
  Disable EditText blinking cursor

我的活动中有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字段时,会出现光标和键盘。但是,当我隐藏键盘时,键盘会消失,但光标会停留。如何使光标也不可见。

当我从nameText按回车键时,光标移至phone字段,键盘仍然可见。这很好。但是当我隐藏键盘或从phone字段按回车键时,键盘会消失,但光标会停留。

在上述情况下,有没有办法(除了使用setOnEditorActionListener)使光标不可见?

3 个答案:

答案 0 :(得分:34)

从您需要设置的edittext中删除光标

nameText.setFocusable(false);

和可见光标集

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

                nameText.setFocusableInTouchMode(true);

                return false;
            }
});

将在edittext中显示光标...

答案 1 :(得分:12)

XML中的

android:cursorVisible或隐藏/显示光标的代码中的setCursorVisible(),您可以使用解释here的方法来确定键盘何时出现&消失了。

答案 2 :(得分:1)

在Xml文件中您可以看到已为EditText自动添加<requestFocus>属性。

因此,只要活动开始,您的EditText就会获得焦点。

首先删除它并尝试...

UpDated答案:

如果您不想修改nameText字段

您可以使用

nameText.setEnabled(false);

如果你想编辑某些情况,

你可以,

nameText.setEnabled(true);

您仍然可以通过编程方式更新nameText字段,

例如,使用nameText.setText(Info.getname());

如果您希望用户修改可见文本,则可以进行

nameText.setEnabled(true);

它会像你期望的那样工作。