所以我使用的是textInputLayout,我需要做的就是为错误图标设置一个自定义的drawable。下面是我的布局和依赖关系
implementation 'com.google.android.material:material:1.2.0-beta01'
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="@dimen/text_field_height"
android:layout_margin="@dimen/activity_margin"
android:hint="@string/insert_name_hint"
app:boxBackgroundColor="@color/transparent"
app:boxCornerRadiusBottomEnd="@dimen/text_field_corner"
app:boxCornerRadiusBottomStart="@dimen/text_field_corner"
app:boxCornerRadiusTopEnd="@dimen/text_field_corner"
app:boxCornerRadiusTopStart="@dimen/text_field_corner"
app:errorEnabled="true"
app:errorTextColor="?colorAccent"
app:errorIconDrawable="@drawable/ic_alert_black_24dp"
app:errorIconTint="?colorAccent"
app:errorContentDescription="@string/insert_name_hint"
app:boxStrokeErrorColor="@color/gray"
app:startIconDrawable="@drawable/ic_cool_black_24dp"
app:startIconTint="@color/gray"
app:hintAnimationEnabled="true"
app:hintTextColor="?colorAccent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/nameEvent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:imeOptions="actionDone"
android:maxLength="30"
android:padding="0dp"
android:textAlignment="center"
android:textCursorDrawable="@null"
android:inputType="textCapSentences"/>
</com.google.android.material.textfield.TextInputLayout>
基本上,可绘制和色调都不能用,用的是默认的图标和颜色。其余的都能正常工作。我没有用程序设置任何东西。
好吧,这个问题是很基本的,但是我过了一会儿就发现了,这不是一个布局层面的问题,而是一个错误管理的问题。这个错误必须设置在 输入布局 而不是在 输入编辑文本. 所以这就是区别(当然我还得给输入布局加个id)。
之前
customView.nameEvent.error = getString(R.string.invalid_value_name)
之后
customView.nameEventLayout.error = getString(R.string.invalid_value_name)
是的,是 该 简单。但我认为这可能是一个常见的错误,所以我希望这个答案可以帮助有人在那里。