我正在使用TextInputLayout
我要在输入文字时更改hinttext
的颜色,然后提示文字的颜色应为蓝色,其他明智颜色应为灰色且{{1}时}包含一些值,然后edittext
的颜色应为蓝色以获取更多信息,请查看我的图片。
终极我想在编辑包含某些值的文本后想要这个。
这是我使用此代码后的当前结果
hintText
请帮助我如何解决这个问题。
答案 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 -->
尝试这个,但它会影响整个应用程序