输入布局切换hintText颜色更改

时间:2017-11-13 09:55:56

标签: android android-layout

我正在使用TextInputLayout我要在输入文字时更改hinttext的颜色,然后提示文字的颜色应为蓝色,其他明智颜色应为灰色且{{1}时}包含一些值,然后edittext的颜色应为蓝色以获取更多信息,请查看我的图片。

image1

终极我想在编辑包含某些值的文本后想要这个。

image2

这是我使用此代码后的当前结果

image3

hintText

请帮助我如何解决这个问题。

5 个答案:

答案 0 :(得分:2)

改变TextInputLayout Lebel Color Dynamicaly on on edit更改edittext并根据我的工作传递颜色。

 public static void textInoutLayoutColor(TextInputLayout textInputLayout, @ColorInt int color) {

    try {
        Field fDefaultTextColor = TextInputLayout.class.getDeclaredField("mDefaultTextColor");
        fDefaultTextColor.setAccessible(true);
        fDefaultTextColor.set(textInputLayout, new ColorStateList(new int[][]{{0}}, new int[]{ color }));

        Field fFocusedTextColor = TextInputLayout.class.getDeclaredField("mFocusedTextColor");
        fFocusedTextColor.setAccessible(true);
        fFocusedTextColor.set(textInputLayout, new ColorStateList(new int[][]{{0}}, new int[]{ color }));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

并改变颜色。

input_layout= (TextInputLayout) findViewById(R.id.input_layout);
   etuser_name.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean hasfocus) {
            if(hasfocus){
                textInoutLayoutColor(input_layout,getResources().getColor(R.color.bullet_color));
            }
            else
            {
                if(etuser_name.getText().toString().trim().length()>0) {
                    textInoutLayoutColor(input_layout,getResources().getColor(R.color.bullet_color));;
                }
                else
                {
                    textInoutLayoutColor(input_layout,getResources().getColor(R.color.hint_grey));
                }
            }
        }
    });

答案 1 :(得分:0)

创建你的下面并尝试

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

将其用作下面的内容

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

答案 2 :(得分:0)

首先,您需要设置TextInputLayout

 android.support.design.widget.TextInputLayout textInputLayout =        (TextInputLayout) view.findViewById(R.id.textInputLayout);

textInputLayout.setHintTextAppearance(R.style.Instyle);

然后在styles.xml文件中,您可以使用提示颜色的颜色创建样式。

<style name="Instyle" parent="AppThemeLight">
    <itemname="android:textColorPrimary">@android:color/darker_gray</item>
    <item name="android:textColor">@android:color/darker_gray</item>
</style>

答案 3 :(得分:0)

当您开始在edittext中输入值时,TextInputLayout会将colorAccent带到hintTextColor。 因此,如果您希望它为蓝色,请在主题中将colorAccent设置为蓝色。当edittext没有值时,将hintTextColor设置为grey。这样做

<android.support.design.widget.TextInputLayout
                    android:id="@+id/userNameTIL"
                    android:layout_width="match_parent"
                    android:layout_height="55dp"
                    android:background="@color/spinnerBg"
                    android:clipToPadding="false"
                    android:gravity="bottom"
                    android:paddingTop="4dp"
                    android:textColorHint="@color/grey"> /*Here it sets color to hintText when edittext has no value */

                    <EditText
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_gravity="bottom"
                        android:background="@null"
                        android:hint="Username"
                        android:inputType="text"
                        android:maxLength="30"
                        android:paddingEnd="3dp"
                        android:paddingStart="25dp"
                        android:paddingTop="3dp"
                        android:singleLine="true"
                        android:textColor="@color/black"
                        android:textColorHint="@color/black"
                        android:textSize="20sp"/>
                </android.support.design.widget.TextInputLayout>

答案 4 :(得分:0)

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
                <!--EditText hint color-->
                <item name="android:textColorHint">@color/default_app_white</item>             <!-- TextInputLayout text color-->
                <item name="colorControlActivated">@color/default_app_green</item>
                <!-- EditText line color when EditText on-focus-->
                <item name="colorControlHighlight">@color/default_app_green</item>
                <!-- EditText line color when EditText  in un-focus-->
                <item name="colorControlNormal">@color/default_app_white</item>
            </style>
 <!-- In your style.xml file -->

尝试这个,但它会影响整个应用程序