以前,我问过如何自定义TextInputLayout的轮廓颜色。您可以在此LINK中查看问题。
在我的应用中声明此颜色:
<color name="mtrl_textinput_default_box_stroke_color" tools:override="true">#fff</color>
这有效,但是会更改应用程序中所有TextInputLayout的线条颜色。如何在同一应用程序中将不同的颜色应用于不同的TextInputLayouts?
谢谢
答案 0 :(得分:1)
好吧,您总是可以使用旧式反射,直到Google弄清楚我们如何才能访问此类简单而基本的内容。 TextInputLayout类中的字段称为defaultStrokeColor,因此,如果将其设置为可访问并更改该值,则在现实世界中也应更改。
try {
Field field = TextInputLayout.class.getDeclaredField("defaultStrokeColor");
field.setAccessible(true);
field.set(commentInputLayout,
ContextCompat.getColor(itemView.getContext(), R.color.app_middleweight));
}
catch (NoSuchFieldException | IllegalAccessException e) {
Log.w("TAG", "Failed to change box color, item might look wrong");
}
答案 1 :(得分:0)
您可以在 res/color 下创建一个 xml 文件并像这样设置选择器。
printf("\n\nRemove characters in String Except Alphabets :\n");
printf("--------------------------------------------------\n");
printf("Input the string : ");
fgets(str, sizeof str, stdin);
for (i = 0; str[i] != '\0'; ++i)
{
while (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z' || str[i] == '\0')))
{
for (j = i; str[j] != '\0'; ++j)
{
str[j] = str[j + 1];
}
str[j] = '\0';
}
ch = islower(str[i]) ? toupper(str[i]) : tolower(str[i]);
putchar(ch);
}
printf("After removing the Output String : %s\n\n", str);
TextInputLayout <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_id_when_focus"
android:state_focused="true" />
<item android:color="@color/default_color_id" />
</selector>
的设置属性