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 fromnameText时,光标转到该phone字段并且键盘仍然可见。这很好。但是当我隐藏键盘或从phone字段中按回车键时,键盘消失但光标保持不变。

在上述情况下,是否有任何方法(除了使用setOnEditorActionListener)使光标不可见?

4

3 回答 3

40

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

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:cursorVisible在 XML 或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 回答