EditText输入内容不显示问题:Google Play安装后文本不可见
问题描述
我在Google Play发布了一款应用,用户从该商店安装后,在EditText输入内容时无法看到输入的文本(推测字体颜色为白色),但点击保存后,输入的值可正常保存至数据库并在列表中显示。在Android Studio模拟器中运行应用时,EditText的文本为黑色,输入内容可见。
相关代码片段
fragment.xml 中EditText的布局代码
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:layout_marginEnd="10dp" android:paddingVertical="5dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="@string/wheeldiameter" android:textColor="@color/black" /> <EditText android:id="@+id/editTextWheelDiameter" android:layout_width="110dp" android:layout_height="wrap_content" android:layout_gravity="end" android:background="@drawable/box_background_drawable" android:drawableStart="@drawable/ic_baseline_edit_24" android:drawablePadding="8dp" android:ems="10" android:hint="0" android:inputType="numberDecimal" android:padding="14dp" android:textColor="@color/black" /> </FrameLayout>
colors.xml 文件内容
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#BB86FC</color> <color name="purple_500">#6200EE</color> <color name="purple_700">#3700B3</color> <color name="teal_200">#03DAC5</color> <color name="teal_700">#018786</color> <color name="black">#000000</color> <color name="white">#FFFFFF</color> <color name="backgroundColor">#dddddd</color> <color name="light_blue">#0FA2EB</color> <color name="green">#3ED004</color> </resources>
提问
请问该问题是否与drawableStart或background有关?
解答
这个问题和drawableStart无关,大概率是自定义background或系统主题适配导致的,具体分析和解决思路如下:
- 排除
drawableStart:该属性仅用于在EditText左侧添加图标,不会影响输入文本的颜色显示,可直接排除其影响。 - 重点排查方向:
- 自定义background的适配问题:检查
box_background_drawable的背景色,如果该drawable背景为白色,而用户设备开启了深色模式,系统可能强制将EditText的文本颜色切换为白色,导致白字白背景无法识别。即使xml中设置了android:textColor="@color/black",系统主题的优先级可能覆盖该设置。 - 模拟器与真机的主题差异:模拟器通常默认使用浅色主题,而用户设备可能开启了深色模式,你的应用未做深色主题适配,导致文本颜色被系统自动切换。
- 自定义background的适配问题:检查
- 解决方案:
- 锁定EditText的文本相关颜色:在EditText标签中添加
android:textColorHint="@color/black"(确保提示文字可见),以及android:textCursorDrawable="@null"(让光标颜色与文本颜色一致),或者通过自定义Style固定EditText的文本颜色,避免系统主题干扰。 - 检查
box_background_drawable:确保其背景色与文本颜色有足够对比度,比如浅色背景搭配黑色文本,深色背景搭配白色文本。 - 适配深色主题:如果应用支持深色模式,在
res/values-night/colors.xml中定义对应的文本颜色,确保深色主题下文本可见。
- 锁定EditText的文本相关颜色:在EditText标签中添加
内容的提问来源于stack exchange,提问作者user2632918
相关产品推荐
相关产品推荐

