【问题标题】:How to not change the color of the label while setting error to particular textinputlayout having edittext inside it?如何在将错误设置为其中包含edittext的特定textinputlayout时不更改标签的颜色?
【发布时间】:2018-11-17 06:04:33
【问题描述】:

我在其中使用 Textinputlayout 和 edittext,问题是当我在验证时将错误设置为 textinputlayout 时,它会将我的提示标签的颜色也更改为红色。当错误出现时,我想用另一种颜色代替红色。只有下划线颜色和错误文本应该变成红色。

上图是问题所在,我不想要红色的电子邮件标签。

下面是我的代码。

xml文件

     <android.support.design.widget.TextInputLayout
            android:layout_marginTop="30dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginBottom="15dp"
 app:errorTextAppearance="@style/error_appearance"
        app:hintTextAppearance="@style/TextLabel1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et1"
            android:padding="0dp">

        <EditText
            android:id="@+id/email"
            android:hint="Email"
            android:textColorHint="#3F4B5B"
            android:maxLines="1"
            android:inputType="text"
            android:textSize="15sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

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


#java file


#Declarations
 private TextInputLayout emailerror;
 private EditText Email;

#On create 
    Email=(EditText) findViewById(R.id.email);
     emailerror=(TextInputLayout) findViewById(R.id.et1);

#Inside validation method
 emailerror.setError("Enter a valid email");

样式.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.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>

    <style name="AppTheme.NoActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
         TextInputLayout text color
        <item name="colorControlNormal">#e0e0e0</item>
        <item name="colorControlActivated">#52AF44</item>
        <item name="android:textColorHint">#3F4B5B</item>
        <item name="android:windowFullscreen">true</item>
    </style>


<!--    <style name="error" parent="@android:style/TextAppearance">
        <item name="android:textColor">#ff0000</item> &lt;!&ndash;apply the color you wat here &ndash;&gt;
        <item name="android:textColorHint">#3E4A58</item>
       &lt;!&ndash; <item name="android:textColorHint">#3a52a6</item>&ndash;&gt;
       &lt;!&ndash; <item name="android:textSize">12dp</item>&ndash;&gt;
    </style>-->

    <!--<style name="Widget.Design.TextInputLayout" parent="AppTheme">
        <item name="hintTextAppearance">@style/TextLabel1</item>
        <item name="errorTextAppearance">@style/error_appearance</item>
        <item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
        <item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
    </style>-->

    <style name="error_appearance" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/colorAccent</item>
    </style>

    <style name="TextLabel1" parent="TextAppearance.Design.Hint">
        <item name="android:textColor">@color/colorPrimaryDark</item>
        <item name="android:textSize">16sp</item>
    </style>

    <style name="ToolbarColoredBackArrow" parent="AppTheme">
        <item name="android:textColorSecondary">@color/white</item>
    </style>

    <style name="EditTextHint" parent="Theme.AppCompat">
        <!--<item name="colorAccent">@android:color/white</item>-->
        <item name="android:textColorHint">#989898</item>
     <!--   <item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
        <item name="colorControlActivated">@color/your color</item>
        <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>-->
    </style>

    <style name="Widget.App.Spinner" parent="@style/Widget.AppCompat.Spinner">
        <item name="overlapAnchor">true</item>
        <item name="android:background">@drawable/spinner_background</item>
    </style>

</resources>

【问题讨论】:

    标签: android xml android-layout


    【解决方案1】:

    您需要使用自定义样式覆盖文本输入布局默认样式。

    styles.xml

    <resources>
    
     <style name="TextLabel">
        <item name="android:textColorHint">@color/colorPrimary</item> <!-- Your Hint Color -->
        <item name="android:textSize">18sp</item>
        <item name="colorAccent">@color/colorPrimary</item>
        <item name="colorControlNormal">@color/colorPrimary</item>
        <item name="colorControlActivated">@color/colorPrimary</item>
    </style>
    
    <style name="error_appearance" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/colorAccent</item>
    </style>
    
    </resources>
    

    activity_layout.xml

            <android.support.design.widget.TextInputLayout
                android:id="@+id/input_layout_mobile"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:theme="@style/TextLabel"
                app:errorTextAppearance="@style/error_appearance">
    
                <EditText
                    android:id="@+id/edt_mobile"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:drawableLeft="@drawable/ic_phone_iphone_black_24dp"
                    android:drawablePadding="8dp"
                    android:drawableTint="@color/colorPrimary"
                    android:hint="@string/email"
                    android:inputType="number"
                    android:textColor="#000" />
            </android.support.design.widget.TextInputLayout>
    

    专注:

    没有焦点:

    错误信息:

    【讨论】:

    • 您好,感谢您的回答。我需要保持提示标签的颜色,因为它是集中的,不集中的和出错的时候。无论状态是专注还是不专注,我都不应该改变。
    • @YeshaShah 所以不要应用你的自定义提示标签样式,那么它将采用默认样式用于 textinput 布局。
    • @AnilGhodake 仍然两种颜色都在变化。我使用了你的代码,但没有效果。
    • @YeshaShah,我刚刚编辑了我的答案。添加了 error appearanceTextLabel1 样式。现在试试这两种风格。还将这些样式应用于文本输入布局,并移除了主题应用于文本输入布局。
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 2021-01-11
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多