【问题标题】:Change TextInputLayout focused & unfocused hint color programmatically以编程方式更改 TextInputLayout 聚焦和不聚焦的提示颜色
【发布时间】:2018-01-06 13:51:52
【问题描述】:

我想在 TEXT INPUT LAYOUT 处于聚焦或未聚焦状态时将提示的颜色更改为相同。我有两个 TEXT INPUT LAYOUT 字段。两个字段颜色相同。但它在聚焦状态下出现颜色但未聚焦声明默认的灰色出现。我想在焦点和非焦点状态下保持提示的颜色相同。

   <com.example.viveka.snipeid.CustomTextInputLayout
        android:id="@+id/input_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        app:errorEnabled="true"
        >
    <EditText
        android:id="@+id/editEmail"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:hint="email / snipe id"
        android:digits="abcdefghijklmnopqrstuvwxyz.@0123456789"
        android:textAllCaps="false"
        android:textSize="12sp"
        android:layout_marginLeft="-4dp"
        android:textColor="@color/lightgray"
        android:textColorHint="@color/primary"/>
    </com.example.viveka.snipeid.CustomTextInputLayout>

预期图像 我得到了什么

我需要将两个字段更改为相同的颜色..

【问题讨论】:

  • 你好 user8367573,你可以试试我的方式。它可以使两个提示颜色相同。
  • 嗨,KeLiuye 现在我更新了图像..
  • 您必须在电子邮件行和密码行中添加TextInputLayout
  • 您好 user8367573,我更新了android:textColor="#FF0000"。它可以改变文字颜色。
  • 那是工作解决方案:kotlin version

标签: android android-layout android-edittext android-textinputlayout


【解决方案1】:

你可以这样做。

android:textColorHint="#FF0000" 是 EditText 的提示颜色。

如果你想要文本颜色以及提示颜色。

您可以在EditText 中更改android:textColor="#FF0000"

您可以添加app:errorTextAppearance="@style/text_in_layout_error_hint_Style"更改错误文本颜色。

<com.example.viveka.snipeid.CustomTextInputLayout
    android:id="@+id/input_layout_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:textColorHint="#FF0000"
    app:errorTextAppearance="@style/text_in_layout_error_hint_Style"
    app:hintTextAppearance="@style/text_in_layout_hint_Style"
    app:errorEnabled="true">

    <EditText
        android:id="@+id/editEmail"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginLeft="-4dp"
        android:digits="abcdefghijklmnopqrstuvwxyz.@0123456789"
        android:hint="email / snipe id"
        android:textAllCaps="false"
        android:textColor="#FF0000"
        android:textColorHint="@color/primary"
        android:textSize="12sp"/>
</com.example.viveka.snipeid.CustomTextInputLayout>

LEFT-TOP 提示颜色取决于app:hintTextAppearance="@style/text_in_layout_hint_Style"

以及样式代码:

<style name="text_in_layout_hint_Style">
    <item name="android:textColor">#FF0000</item>
    <item name="android:textSize">12sp</item>
</style>

添加错误文本样式

 <style name="text_in_layout_error_hint_Style">
    <item name="android:textColor">#00ff00</item>
    <item name="android:textSize">12sp</item>
</style>

像这样: 希望能帮到你。

【讨论】:

  • @KeLiuye 完美。但是当错误出现时我想再次更改颜色..颜色将更改为绿色。示例:如果我单击登录而不填写两个字段。颜色返回绿色在禁用和集中...
  • @user8367573,您可以添加app:errorTextAppearance="@style/text_in_layout_error_hint_Style"更改错误文本颜色。
【解决方案2】:

创建一个 selector_text_input_layout_hint_color.xml(例如)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorWhenFocus" android:state_focused="true"/>
    <item android:color="@color/colorWhenNotFocus" android:state_focused="false"/>
</selector>

在文本输入布局中设置下一个属性:

android:textColorHint="@color/selector_text_input_layout_hint_color"

感谢:https://medium.com/@fast3r/this-is-brilliant-martin-thank-you-very-much-6c4a43a65df4

就是这样。它对我有用;)

【讨论】:

    【解决方案3】:

    在新材质主题中,提示颜色是未聚焦时 colorOnSurface 属性的着色版本。

    当聚焦时它是 colorPrimary

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2019-08-22
      • 2020-03-20
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多