我想在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" />
有人知道任何解决方案吗?
答案 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
,代码如下。
<EditText
android:id="@+id/edtText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" >
</EditText>
EditText edt = (EditText) findViewById(R.id.edtText);
edt.setSelection(edt.getText().length());
<强>输出强>
答案 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();