android EditText融入后台

Ken*_*and 8 android android-edittext android-3.0-honeycomb android-4.0-ice-cream-sandwich

我的应用程序Theme.Holo.Light.DarkActionBar用作父主题.

当我使用Android 3.2平板电脑模拟器时,几乎无法看到EditText形状.看起来它试图在白色上画白色.见到这里:

在此输入图像描述

当我在Android 4.0平板电脑模拟器上使用它时,EditText形状看起来很好.您可以在EditText底部看到深灰色线条.如果您查看上面的图像,您只会在与浅灰色背景水印相交的地方几乎看不到白线.

在此输入图像描述

这是布局中的EditText:

<EditText
    android:id="@+id/fieldName"
    style="@style/PlayerDetails.Field"
    android:capitalize="words" />
Run Code Online (Sandbox Code Playgroud)

这是风格:

<style name="PlayerDetails.Field">
    <item name="android:layout_weight">0.65</item>
    <item name="android:paddingLeft">10dp</item>
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">fill_parent</item>
    <item name="android:layout_marginLeft">10dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

为什么我的EditText被绘制错误的颜色?我没有覆盖绘图代码或背景drawable.

Ken*_*and 5

其他答案实际上并不是我的问题的解决方案,我从来没有弄清楚究竟是什么导致了这个问题.然而,这就是我解决它的方法:我的解决方法是从Ice Cream Sandwich复制.9.pngs和EditText小部件样式并硬编码到我的蜂窝和冰淇淋三明治应用程序中.

编辑:

我创建了一个名为res/drawable-nodpi/edit_text_holo_light.xml的文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_multiline="true" android:state_window_focused="false" android:state_enabled="true"  android:drawable="@drawable/textfield_multiline_default_holo_light" />
    <item android:state_multiline="true" android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_multiline_disabled_holo_light" />
    <item android:state_multiline="true" android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_multiline_activated_holo_light" />
    <item android:state_multiline="true" android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_multiline_focused_holo_light" />
    <item android:state_multiline="true" android:state_enabled="true" android:drawable="@drawable/textfield_multiline_default_holo_light" />
    <item android:state_multiline="true" android:state_focused="true" android:drawable="@drawable/textfield_multiline_disabled_focused_holo_light" />
    <item android:state_multiline="true" android:drawable="@drawable/textfield_multiline_disabled_holo_light" />

    <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_light" />
    <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_disabled_holo_light" />
    <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_activated_holo_light" />
    <iten android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_focused_holo_light" />
    <item android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_light" />
    <item android:state_focused="true" android:drawable="@drawable/textfield_disabled_focused_holo_light" />
    <item android:drawable="@drawable/textfield_disabled_holo_light" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后我在styles.xml中创建了一个样式来设置:

<item name="android:background">@drawable/edit_text_holo_light</item>
Run Code Online (Sandbox Code Playgroud)

然后我从android sdk复制.9.png文件并将它们放在res/drawable-*中.文件名列在上面的xml中.

  • 我进入android sdk文件夹,找到.9.png文件,用于绘制标准文本字段.例如,其中一个名为textfield_activated_holo_light.9.png.我将所有这些文件复制到我的res/drawable-v11目录中,因此它们将用于包含v11之后的任何Android版本.然后我添加了一个drawable-nodpi/edit_text_holo_light.xml,并在其中复制了orignal Android样式的样式.(包含在这里太多了,我会更新我的答案) (2认同)