7

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

我试过 android:cursorVisible="true"在 TextView 但不行。

即使我试过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

4 回答 4

6

首先,您应该使用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());
于 2013-08-27T06:20:48.643 回答
2

有一个解决方案。

我在制作终端应用程序时必须这样做,并且我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();
于 2015-11-07T14:11:00.223 回答
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.
于 2013-08-27T07:14:13.977 回答
1

我认为你应该去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());

输出

在此处输入图像描述

于 2013-08-27T06:23:22.170 回答