gpt4 book ai didi

java - EditText setError 不显示默认错误图标

转载 作者:行者123 更新时间:2023-12-02 03:15:11 28 4
gpt4 key购买 nike

我对 Android 应用程序中的 EditText 进行了验证。错误消息按预期弹出,但不显示默认错误图标。

enter image description here

    if(users.getText().toString().isEmpty()){
errorNum++;
users.setError("Field can not be empty");
} else {
users.setError(null);
}

我也尝试过使用自定义图标,但它也不起作用。

users.setError("Field can not be empty",getDrawable(R.drawable.ic_error_outline_black_24dp));

如何获取用于验证的默认错误图标

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.dinesh.note.MainActivity">

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">

<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:labelFor="@+id/users"
android:text="@string/users"
android:textAppearance="@android:style/TextAppearance.Widget.TextView" />

<EditText
android:id="@+id/users"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
/>
</TableRow>

<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/years"
android:text="@string/years"


android:textAppearance="@android:style/TextAppearance.Widget.TextView" />

<EditText
android:id="@+id/years"
android:layout_width="wrap_content"
android:layout_height="wrap_content"


android:ems="10"
android:inputType="number" />
</TableRow>

<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/percentage"
android:text="@string/percentage"
android:textAppearance="@android:style/TextAppearance.Widget.TextView" />

<EditText
android:id="@+id/percentage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:ems="10"
android:inputType="numberDecimal" />
</TableRow>

<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/months"
android:text="@string/months"
android:textAppearance="@android:style/TextAppearance.Widget.TextView" />

<EditText
android:id="@+id/months"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:ems="10"
android:inputType="number" />
</TableRow>
</TableLayout>

<TextView
android:id="@+id/tamount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/calculate"
android:layout_marginTop="24dp"
android:text="@string/tamount"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />

<TextView
android:id="@+id/amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tamount"
android:layout_marginTop="24dp"
android:text="@string/amount"
android:textAlignment="center"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textSize="36sp"
android:textColor="@color/colorAccent" />

<Button
android:id="@+id/calculate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:text="@string/calculate"
android:textColor="@android:color/background_light"
android:layout_marginTop="227dp"
android:onClick="calculateBtn"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>

xml 样式

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

</resources>

最佳答案

我强烈建议您考虑采用现代方法来处理此类事情,原因有一个:随着越来越多的用户升级他们的设备,Google 的向后兼容库已经可以做到这一点。

例如,尝试:TextInputLayout,它可以通过支持库获得。如果您尚未添加,请在应用级 build.gradle 文件中执行此操作。

compile 'com.android.support:design:25.0.0'

然后在布局文件中:

<android.support.design.widget.TextInputLayout
android:id="@+id/quoteIdWrapper"
android:layout_gravity="start"
android:layout_width="match_parent"
android:gravity="start"
android:layout_height="wrap_content">

<EditText
android:id="@+id/quoteId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:lines="8"
android:layout_gravity="start"
android:gravity="top|start"
android:minLines="5"
android:maxLines="10"
android:scrollbars="vertical"
android:inputType="textCapSentences|textMultiLine"
android:hint="@string/quote_text"/>

</android.support.design.widget.TextInputLayout>

然后,您可以从代码中获取对这两个项目的引用(TextInputLayout 和 EditText)。

接下来,验证 Edittext 字段,如果某些内容无效,请将以下属性设置为 TextInputLayout 引用:

textInputLayout.setErrorEnabled(true);
textInputLayout.setError("Your error message");

这将自动以正确的颜色(通常是红色)向用户发出信号,从而更容易知道某些内容是否有遗漏。

我希望你明白我的想法。祝你好运!!

关于java - EditText setError 不显示默认错误图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435268/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com