我的主布局中有一个EditText。我还有一个应用主题,其中默认的edittext使用自定义curdordrawable进行样式设置。
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/introEditText"
android:gravity="top"
android:singleLine="false"
android:text=""
android:inputType="textMultiLine"
android:textSize="24sp" >
<requestFocus/>
</EditText>
<style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
<item name="android:textColor">#ffffff</item>
...
<item name="android:editTextStyle">@style/EditTextStyle</item>
</style>
<style name="EditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:background">@android:color/transparent</item>
<item name="android:textCursorDrawable">@drawable/cursor</item>
</style>
我的自定义光标是:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:width="2dp" />
<solid android:color="#363636" />
</shape>
光标颜色正确,但宽度不是。在第一行,它是1 px宽而不是2dp。文本分成两行后,光标变为2dp宽。此外,当edittext没有文本时,它不会显示。我在4.4(HTC One和Nexus 7)上测试了这个 这是Android的错误吗?
答案 0 :(得分:4)
实际上随着EditText的宽度增加,光标的大小被设置为被某个空格掩盖(无法弄清楚它是什么)。因此解决方案是修复EditText宽度。
<EditText
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/introEditText"
android:gravity="top"
android:singleLine="false"
android:text=""
android:inputType="textMultiLine"
android:textSize="24" />
如果您想要精确的宽度,请使用如下的ems:
<EditText android:ems="10" ...
/>
android:ems设置TextView的宽度以适合n&#39; M&#39;的文本。字母大小为12sp时的字母
我认为没有办法解决这个问题。
答案 1 :(得分:1)
这在模拟器中对我有用。像你一样在drawable中创建一个xml文件:
edit_text_cursor.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:width="2dip"/>
<solid android:color="#00AAEE"/>
</shape>
然后在你的布局中创建它:
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:singleLine="false"
android:textCursorDrawable="@drawable/edit_text_cursor"
android:ems="10"
android:inputType="textMultiLine" />
这会修复第一个像素光标。(我测试过它):
android:ems="10"
这应该足够了,但是如果在空白时显示光标有问题。您可以将其添加到EditText以强制它:
android:cursorVisible="true"