Dan*_*n J 2 user-interface android user-input
我有一个简单的EditText字段,在登录页面上显示用户的电话号码.初次登录后,电话号码字段被禁用.
这几乎在我的所有设备上看起来都很棒(此屏幕截图来自三星Galaxy S):

但是,在我的LG Nitro上,禁用的EditText字段中的文本是不可读的(如果我放大高分辨率屏幕截图,我可以看到白色文本):

我从EditText中删除了所有自定义样式规则,并且出现了同样的问题,所以我认为这只是手机系统默认颜色的错误选择.
问题1:任何人都可以确认我的诊断是否正确吗?
我可以使文本可读的唯一方法是在代码中将文本设置为深灰色:
if (fieldDisabled)
{
// Some devices use their own default style for a disabled text field,
// which makes it impossible to read its text, e.g. the LG Nitro.
//
// The workaround is to override the text color here.
mPhoneNumber.setTextColor(Color.DKGRAY);
}
Run Code Online (Sandbox Code Playgroud)
之后,所有设备(包括LG Nitro)上的文字都很容易阅读:

我将自定义样式设置为使用@color/black而不是现有颜色,但文本仍显示为白色.
问题2:我可以使用更好的解决方法吗?
我的LG Nitro是运行OS 2.3.5的LG-P930型号.
我的XML
以下是我正在使用的XML的片段.
RES /布局/ myscreen.xml:
<EditText
...
android:textAppearance="@style/MyStyle">
</EditText>
Run Code Online (Sandbox Code Playgroud)
RES /值/ styles.xml:
<style name="MyStyle">
<item name="android:textSize">14dp</item>
<item name="android:textColor">@color/blue</item>
</style>
Run Code Online (Sandbox Code Playgroud)
RES /值/ colors.xml:
<color name="white">#ffffffff</color>
<color name="blue">#ff0000ff</color>
<color name="black">#ff000000</color>
Run Code Online (Sandbox Code Playgroud)
我想出了如何更改EditText文本的颜色.
使用android:textAppearance并不会出现让你改变一个EditText文本的颜色(它让你改变文字大小).
一种替代方法是使用style属性而不是android:textAppearance,因为这将应用文本颜色更改,例如
style="@style/MyStyle"
Run Code Online (Sandbox Code Playgroud)
但是,我认为最好的解决方案是使用ColorStateList.以下是我的解决方案.
res/layout/myscreen.xml(仍然需要textAppearance来控制文本大小):
<EditText
...
android:textColor="@color/edittext"
android:textAppearance="@style/MyStyle">
</EditText>
Run Code Online (Sandbox Code Playgroud)
RES /颜色/ edittext.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:color="@color/black" />
<item android:state_enabled="false" android:color="@color/grey" />
</selector>
Run Code Online (Sandbox Code Playgroud)
res/values/styles.xml(即make MyStyle只定义文本大小,而不是颜色):
<style name="MyStyle">
<item name="android:textSize">14dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2375 次 |
| 最近记录: |