android EditText融入后台

时间:2012-03-28 03:40:30

标签: android android-edittext android-3.0-honeycomb android-4.0-ice-cream-sandwich

我的应用使用Theme.Holo.Light.DarkActionBar作为父主题。

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

enter image description here

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

enter image description here

这是我在布局中的EditText:

<EditText
    android:id="@+id/fieldName"
    style="@style/PlayerDetails.Field"
    android:capitalize="words" />

这是风格:

<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>

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

3 个答案:

答案 0 :(得分:5)

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

编辑:

我创建了一个名为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>

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

<item name="android:background">@drawable/edit_text_holo_light</item>

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

答案 1 :(得分:1)

如果您使用如下主题,您可以拥有一个操作栏并仍然可以看到EditText浅灰色背景水印:

的AndroidManifest.xml

<activity
  android:name=".ClassName"
  android:label="ClassName"
  android:theme="@style/MyTheme" >

styles.xml

<resources>
  <style name="MyTheme" parent="android:Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
  </style>
  <style name="MyActionBar" parent="android:Widget.Holo.ActionBar">
    <item name="android:background">@color/black</item>
  </style>
</resources>

这适用于主题“android:Theme.Holo.Light”,但不适用于主题“android:Theme.Holo”。

答案 2 :(得分:0)

我弄清楚了我的问题。通过在manifest.xml文件中的应用程序元素android:theme="@android:style/Theme"中设置主题。

<application 

android:label="@string/app_name" 

android:icon="@drawable/logo" 

android:vmSafeMode="false" 

android:theme="@android:style/Theme">

试试这个。