如何改变TextInputLayout的浮动标签颜色如何改变TextInputLayout的浮动标签

2019-05-10 12:30发布

参照新TextInputLayout由谷歌发布了,我如何改变浮动标签文本颜色?

设置colorControlNormalcolorControlActivatedcolorControlHighLight在风格没有帮助。

这是我现在有:

Answer 1:

试试下面的代码工作在正常状态

 <android.support.design.widget.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/TextLabel">

     <android.support.v7.widget.AppCompatEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="Hiiiii"
         android:id="@+id/edit_id"/>

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

在样式文件夹为textLabel代码

 <style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

设置APP的主旋律,它只能强调状态只

 <item name="colorAccent">@color/Color Name</item>

更新:

UnsupportedOperationException异常:无法转换为彩色:类型= 0×2的API 16或以下



Answer 2:

<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/red</item>
    <item name="android:textSize">14sp</item>
</style>

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/gray"  //support 23.0.0
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" >

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint" />
</android.support.design.widget.TextInputLayout>


Answer 3:

找到了答案,用android.support.design:hintTextAppearance属性设置自己的浮动标签的外观。

例:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:hintTextAppearance="@style/TextAppearance.AppCompat">

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_password"/>
</android.support.design.widget.TextInputLayout>


Answer 4:

你并不需要使用android:theme="@style/TextInputLayoutTheme"改变浮动标签的颜色,因为它会影响到对用作标签的小TextView的整个主题。 相反,你可以使用app:hintTextAppearance="@style/TextInputLayout.HintText"其中:

<style name="TextInputLayout.HintText">
  <item name="android:textColor">?attr/colorPrimary</item>
  <item name="android:textSize">@dimen/text_tiny_size</item>
  ...
</style>

让我知道如果解决方案的工作:-)



Answer 5:

好了,所以,我发现这个答案非常有帮助,并感谢所有谁贡献的人。 我想补充的东西,虽然。 该接受的答案确实是正确答案......但在我而言,我一直在寻找实现以下错误消息EditText小部件app:errorEnabled="true" ,这一条线让我的生活困难。 看来,这会取代我选择的主题android.support.design.widget.TextInputLayout ,具有由定义的不同的文字颜色android:textColorPrimary

最后,我把直接应用文本颜色到EditText小部件。 我的代码看起来是这样的:

styles.xml

<item name="colorPrimary">@color/my_yellow</item>
<item name="colorPrimaryDark">@color/my_yellow_dark</item>
<item name="colorAccent">@color/my_yellow_dark</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@color/dark_gray</item>
<item name="android:windowBackground">@color/light_gray</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColorHint">@color/dark_gray</item>
<item name="android:colorControlNormal">@android:color/black</item>
<item name="android:colorControlActivated">@android:color/white</item>

而我的小工具:

<android.support.design.widget.TextInputLayout
        android:id="@+id/log_in_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:errorEnabled="true">

        <EditText
            android:id="@+id/log_in_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/black"
            android:ems="10"
            android:hint="@string/log_in_name"
            android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>

现在,它会显示黑色文字的颜色,而不是textColorPrimary白色。



Answer 6:

我建议你做的风格主题TextInputLayout,改变只强调色。 家长设置为您的应用基本主题:

 <style name="MyTextInputLayout" parent="MyAppThemeBase">
     <item name="colorAccent">@color/colorPrimary</item>
 </style>

 <android.support.design.widget.TextInputLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:theme="@style/MyTextInputLayout">


Answer 7:

在支持库(23.0.0+)的最新版本, TextInputLayout采取下列属性的XML编辑浮动标签颜色: android:textColorHint="@color/white"



Answer 8:

相反Brahmam亚马尼回答我更喜欢使用Widget.Design.TextInputLayout父。 这确保了所有必需的物品都存在,即使不是所有的项目将被覆盖。 在Yamanis答案,应用程序将有一个不可避免的崩溃的资源,如果setErrorEnabled(TRUE)被调用。

简单的改变样式为以下内容:

<style name="TextLabel" parent="Widget.Design.TextInputLayout">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>


Answer 9:

在我的情况下,我加入这个“ app:hintTextAppearance="@color/colorPrimaryDark"在我TextInputLayout部件。



Answer 10:

你应该在这里更改颜色

<style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
        <item name="android:windowBackground">@color/window_background</item>
    </style>


Answer 11:

现在,只需使用colorAccentcolorPrimary将很好地工作。



Answer 12:

我解决这个问题。 这是布局:

 <android.support.design.widget.TextInputLayout
           android:id="@+id/til_username"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/username"
           >

           <android.support.v7.widget.AppCompatEditText android:id="@+id/et_username"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:singleLine="true"
               />
       </android.support.design.widget.TextInputLayout>

这是风格:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>
<!-- Application theme. -->


 <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <item name="colorAccent">@color/pink</item>
        <item name="colorControlNormal">@color/purple</item>
        <item name="colorControlActivated">@color/yellow</item>
    </style>

你应该用你的主题应用程序:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
</application>


Answer 13:

改变文本标签的颜色,当你专注于它。 即打字吧。 你必须添加指定

<item name="android:textColorPrimary">@color/yourcolorhere</item>

只是注意:你必须对所有这些实现添加到您的主旋律。



Answer 14:

它的工作对我来说.....增添一丝色彩TextInputLayout

    <android.support.design.widget.TextInputLayout
        android:textColorHint="#ffffff"
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edtTextPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            />
    </android.support.design.widget.TextInputLayout>


Answer 15:

要更改提示和编辑文本下划线颜色的颜色:colorControlActivated

要更改字符计数器颜色:textColorSecondary

要改变错误信息的颜色:colorControlNormal

要更改密码的知名度按钮着色:colorForeground

有关TextInputLayout更多信息阅读http://www.zoftino.com/android-textinputlayout-tutorial

<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorControlActivated">#e91e63</item>
    <item name="android:colorForeground">#33691e</item>
    <item name="colorControlNormal">#f57f17</item>
    <item name="android:textColorSecondary">#673ab7</item>
</style>


Answer 16:

我尝试使用机器人:textColorHint在android.support.design.widget.TextInputLayout它工作正常。

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/colorAccent">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Hello"
                android:imeActionLabel="Hello"
                android:imeOptions="actionUnspecified"
                android:maxLines="1"
                android:singleLine="true"/>

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


Answer 17:

  <style name="AppTheme2" parent="AppTheme">
    <!-- Customize your theme here. -->
    <item name="colorControlNormal">#fff</item>
    <item name="colorControlActivated">#fff</item></style>    

这个增加的风格和TextInputLayout Theam设置为应用2,它会工作;)



文章来源: How to change the floating label color of TextInputLayout