Edittext setError在android 6.0中不显示消息

时间:2017-03-09 06:22:52

标签: android android-edittext

Edittext setError方法没有在Android 6.0中显示文本,但在android 5.0中完美运行。我尝试了很多解决方案,但没有得到解决方案,我尝试了Android 6 EditText.setError not working correctly的所有解决方案,那么如何解决这个问题呢?enter image description here

这是我的xml:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar_create_page"
    android:fillViewport="false">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:id="@+id/ivPageBanner"
            android:src="@drawable/bg_timeline"
            android:scaleType="fitXY" />

        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:id="@+id/ivPageDp"
            android:layout_alignParentBottom="false"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="140dp"
            android:layout_marginLeft="15dp"
            android:src="@drawable/flagwithcamera" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/etPageName"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/ivPageDp"
            android:layout_marginTop="20dp"
            android:hint="Page name"
            style="@style/EditTextTheme"
            android:theme="@style/EditTextTheme"
            android:textCursorDrawable="@drawable/black_cursor"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:textColorHint="@color/hint_foreground_material_light" />
    </RelativeLayout>
</ScrollView>

以下是Edittext的样式:

<style name="EditTextTheme" parent="Widget.AppCompat.EditText">
    <item name="android:textColor">@color/transparent</item>
    <item name="android:textColorHint">@color/transparent</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="colorControlNormal">@color/colorPrimary</item>
    <item name="colorControlActivated">@color/colorPrimary</item>
</style>

这是我的Colors.xml:

<color name="colorPrimary">#64100b</color>
<color name="transparent">#fc000000</color>

2 个答案:

答案 0 :(得分:4)

我得到了解决方案。刚刚从我的Edittext中删除了它:

android:theme="@style/EditTextTheme"

原因在setError的文本下面加下划线。

好的,但这些下划线来自哪里?

android:theme是View的一个属性,当您将样式设置为android:theme时,该样式将被ContextThemeWrapper包含,并且在通胀视图中具有上下文主题。

这意味着,如果您将android:theme属性设置为包含android:background项的样式,如

<item name="android:background">@color/red</item>

此主题所有者的每个子视图都将具有绿色背景。

"Widget.AppCompat.EditText"是一种样式,并引用?attr/editTextBackground作为"android:background"。在v21 / values-21.xml文件@drawable/abc_edit_text_material中定义为editTextBackground

感谢https://stackoverflow.com/a/42355788/5909385

答案 1 :(得分:1)

我认为,它确实显示但它有点被切断。尝试使用浮动标签&amp;将Error设置为TextInputLayout引用。如果您仍然面临问题,请告诉我