正如问题所说:在运行Android 4.3+的设备上测试应用程序(也在4.4上测试)时,提示的颜色(对于EditText)变为白色,无论我将其设置为哪种颜色,它都保持白色。由于 EditText 的背景是白色的,因此肉眼看不到提示!
我用谷歌搜索了又用谷歌搜索,找不到有相同问题的人。该应用程序是使用 android:minSdkVersion="8"
和 android:targetSdkVersion="15"
构建的。编辑文本如下所示:
<EditText
android:id="@+id/editText3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/my_background"
android:ems="10"
android:textColorHint="@color/BlueViolet"
android:hint="@string/my_hint"
android:inputType="number"
android:tag="21_0" />
起初它使用的是默认android:textColorHint
,我认为也许Android 4.3 +出于某种原因将默认值更改为白色。但事实似乎并非如此,因为无论我将其设置为哪种颜色,它始终是白色的。
我知道fill_parent
已被弃用,但该应用程序是很久以前构建的,但由于提示消失,现在无法使用。任何帮助不胜感激!谢谢!
编辑:使用字符串资源作为提示时似乎会出现"错误"。这有效:android:hint="Hello world"
虽然这不android:hint="@string/my_hint"
对于与同样问题作斗争的人;
如果您在
android.support.design.widget.TextInputLayout
你应该把你的
android:textColorHint="@color/BlueViolet"
在文本输入布局中
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColorHint="@android:color/white">
<AutoCompleteTextView
android:id="@id/etextEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_card"
android:inputType="textEmailAddress"
android:maxLines="1"
android:singleLine="true"
android:textColor="@android:color/white"/>
</android.support.design.widget.TextInputLayout>
似乎从Android 4.3+开始,不再可能按如下方式制作字符串资源(不确定它是否曾经打算以这种方式工作):
<string name="my_hint"><font size="13" fgcolor="#ffbbbbbb">Hello world</font></string>
如果你这样做,它们会变成白色。因此,您只能以这种方式创建字符串资源:
<string name="my_hint">Hello world</string>
然后使用 TextView/EditText 上的属性来编辑提示的颜色。要更改大小,似乎仍然可以执行以下操作:
<string name="my_hint"><small><small>Hello world</small></small></string>
我通过阅读这个答案的评论发现了这一点:https://stackoverflow.com/a/11577658/2422321,爱德华·福尔克
除了Erhan的回答或如果您正在使用TextInputLayout小部件,
我发现使用 app:hintTextColor
而不是android:textColorHint
效果最好