如何在TextView中的文本末尾显示光标?

时间:2013-08-27 06:07:28

标签: android

我想在TextView的文本末尾显示闪烁的光标。

我在TextView中尝试android:cursorVisible="true"但是没有去。

即使我尝试text.setCursorVisible(true);也无法工作。

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:cursorVisible="true"
    android:textCursorDrawable="@null"  />

有人知道任何解决方案吗?

4 个答案:

答案 0 :(得分:5)

首先,您应该使用EditText代替TextView来获取输入。如果光标仍然没有闪烁,请在android:cursorVisible="true"中设置xml file属性,它应该使光标闪烁。如果您的光标在编辑文本中不可见,那也是无法看到光标闪烁的原因。设置android:textCursorDrawable="@null"。这应该可以解决你的问题

<EditText
   android:id="@+id/editext1"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:textCursorDrawable="@null"
   android:cursorVisible="true">

</EditText>

在您的活动类中,也要添加此代码。

EditText input = (EditText)findViewById(R.id.edittext1);
input.setSelection(input.getText().length());

答案 1 :(得分:2)

我认为你应该去EditText。您可以设置其背景,并使其显示为TextView,代码如下。

第1步

<EditText
    android:id="@+id/edtText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent" >
</EditText>

第2步

EditText edt = (EditText) findViewById(R.id.edtText);
edt.setSelection(edt.getText().length());

<强>输出

enter image description here

答案 2 :(得分:1)

最后根据 @Chintan Rathod 建议使用EditText修复此问题。

<EditText
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"/> //reference to @Chintan Rathod.

<强>代码

EditText text=(EditText) findViewById(R.id.text);
text.setText("hello");
text.setSelection(text.getText().length()); // reference to @Umer Farooq code.

答案 3 :(得分:1)

有一个解决方案。

当我制作一个终端应用程序时,我必须这样做,并且我使用了一个简单的runnable将光标放在最后并使其闪烁。

我制作了3个类变量:

private boolean displayCursor;
private boolean cursorOn;
private String terminalText;

private TextView terminal; // The TextView Object

terminalText会跟踪要显示的文字。

创建了一个第一次运行runnable的类方法

private void runCursorThread() {
    Runnable runnable = new Runnable() {
        public void run() {
            if (displayCursor) {
                if (cursorOn) {
                    terminal.setText(terminalText);
                } else {
                    terminal.setText(terminalText + '_');
                }
                cursorOn = !cursorOn;
            }
            terminal.postDelayed(this, 400);
        }
    };
    runnable.run();
}

启动变量并在runCursorThread()

中调用onCreate()
    cursorOn = false;
    displayCursor = true;
    runCursorThread();