EditText 在特定设备上黑底黑字

EditText black on black on a certain device

我有一个非常奇怪的问题,在我测试我的应用程序的每台设备上,edittext 的行为都符合您的预期,文本突出显示并且在白色背景上是黑色的。

特别是在 Lenovo Yoga 平板电脑上,当编辑文本获得焦点时,文本将变为黑色并与背景融为一体。

这里的布局是:

 <RelativeLayout
                android:id="@+id/ip_layout"
                android:layout_below="@id/display_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dip"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip">
                <LinearLayout
                    android:layout_marginBottom="10dip"
                    android:background="#8A8A8A"
                    android:layout_height="wrap_content"
                    android:paddingLeft="5dp"
                    android:paddingRight="5dp"
                    android:paddingTop="1dp"
                    android:layout_width="match_parent" />
                <EditText
                    android:layout_marginTop="10dip"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="false"
                    android:hint="@string/Hostname"
                    android:singleLine="true"
                    android:imeOptions="actionNext"
                    android:background="@android:color/transparent"
                    android:id="@+id/host_address"
                    android:maxLength="50" />
            </RelativeLayout>

您必须创建自己的九个补丁图像并将其用作 EditText 的背景,否则 Edittext 的行为将随着 android 的设备和版本而改变。

如果您想为 edittext 背景创建更多效果,例如按下、聚焦和默认状态,那么您需要为 edittext 的背景图像创建一个选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_pressed="true"
        android:drawable="@android:drawable/Epressed"/> 
    <item 
        android:state_focused="true"
        android:drawable="@drawable/Efocused"/>
    <item 
        android:drawable="@android:drawable/Edefault"/>
</selector>

如果是特定设备上的问题,可能是由于设备的自定义主题。最近的 Android 设备需要支持 Holo 主题,您可以使用以下方式在清单中明确请求该主题:

<style name="AppTheme" parent="android:Theme.Holo" />