在Android 3.0中更改EditText光标的颜色

时间:2011-12-14 11:42:09

标签: android cursor android-edittext

我的应用程序中必须有一个带有白色背景的EditText。我在我的theme.xml文件

中这样做了
<style name="myEditText" parent="@android:style/Widget.EditText">
  <item name="android:background">#ffffffff</item>
  <item name="android:textColor">#ff000000</item>
</style>

现在的问题是光标仍然是白色,因此不可见。 我做了一些谷歌搜索,并在StackOverflow上找到了这个问题: Set EditText cursor color

它的完成方式是android:textCursorDrawable键。但是这个密钥确实只能用于3.2目标。但我们的客户想要3.0目标,我找不到任何其他解决方案......

有什么办法可以用3.0作为目标来改变闪烁光标的颜色吗?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

我找到了答案:)

我已将Theme的editText样式设置为:

<item name="android:editTextStyle">@style/myEditText</item>

然后我使用以下drawable来设置光标:

<style name="myEditText" parent="@android:style/Widget.Holo.Light.EditText"> 
<item name="android:background">@android:drawable/editbox_background_normal</item> 
<item name="android:textCursorDrawable">@android:drawable/my_cursor_drawable</item> 
<item name="android:height">40sp</item> </style>

android:textCursorDrawable 是这里的关键。

并且也参考这个 Vertical line using XML drawable

答案 1 :(得分:1)

我试图更改我的应用中针对API 8的光标颜色。我发现TextView使用textColor属性作为光标颜色。以下是onDraw() API 8中定义的TextView的一部分:

    int color = mCurTextColor;

    if (mLayout == null) {
        assumeLayout();
    }

    Layout layout = mLayout;
    int cursorcolor = color;

然后cursorcolor用于构造表示颜色的android.graphics.Path对象。

如果您需要更改此行为,那么您需要完成自己的TextView