AppcompatEditText 未显示 android:textCursorDrawable="@null" 和自定义背景集的光标
Posted
技术标签:
【中文标题】AppcompatEditText 未显示 android:textCursorDrawable="@null" 和自定义背景集的光标【英文标题】:AppcompatEditText not showing cursor for android:textCursorDrawable="@null" and custom background set 【发布时间】:2021-10-11 22:40:06 【问题描述】:我正面临这个问题,应用了所有解决方案,但不确定我什么时候会出错。请指导我。
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/edtPassCode1"
android:layout_
android:layout_
android:cursorVisible="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/bg_pass_code"
android:digits="0123456789"
android:textCursorDrawable="@null"
android:fontFamily="@font/montserrat"
android:imeOptions="actionNext"
android:inputType="numberPassword"
android:maxLength="1"
android:padding="@dimen/_10sdp"
android:paddingStart="@dimen/_15sdp"
android:paddingEnd="@dimen/_15sdp"
android:singleLine="true"
android:text="@=viewModel.passCode1"
android:textColor="@color/colorPrimary"
android:textColorHint="@color/colorPrimary"
android:textSize="@dimen/_12ssp"
app:layout_constraintEnd_toStartOf="@+id/edtPassCode2"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
AppcompatEditText -> 背景:@drawable/bg_pass_code
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-1dp"
android:right="-1dp"
android:top="-1dp">
<shape android:shape="rectangle">
<solid android:color="#00000000" />
<stroke
android:
android:color="#45ada8" />
</shape>
</item>
</layer-list>
我也尝试在 textCursorDrawable 中应用 drawable。但它也不起作用。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android: />
<solid android:color="#000000" />
</shape>
【问题讨论】:
【参考方案1】:不要将android:textCursorDrawable
属性用于@null
,这不是推荐的方式。
删除并设置
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/edtPassCode1"
android:layout_
android:layout_
android:cursorVisible="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/bg_pass_code"
android:digits="0123456789"
android:fontFamily="@font/montserrat"
android:imeOptions="actionNext"
android:inputType="numberPassword"
android:maxLength="1"
android:padding="@dimen/_10sdp"
android:paddingStart="@dimen/_15sdp"
android:paddingEnd="@dimen/_15sdp"
android:singleLine="true"
android:text="@=viewModel.passCode1"
android:textColor="@color/colorPrimary"
android:textColorHint="@color/colorPrimary"
android:textSize="@dimen/_12ssp"
app:layout_constraintEnd_toStartOf="@+id/edtPassCode2"
android:textCursorDrawable="@drawable/color_cursor"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
然后创建drawalble xml:color_cursor.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android: />
<solid android:color="#FFFFFF" />
</shape>
EditText 属性上有一个白色光标。
【讨论】:
不行,我也试过这种方法,有问题已经解释过了。【参考方案2】:我已经解决了这个问题。我错误地将<item name="colorAccent">@color/white</item>
放入了我应用主题的theme.xml
文件中。我已经用我的光标颜色替换了,它工作正常。
【讨论】:
以上是关于AppcompatEditText 未显示 android:textCursorDrawable="@null" 和自定义背景集的光标的主要内容,如果未能解决你的问题,请参考以下文章
Android AppCompatEditText,AppCompatTextView, setText 无ID