2017-03-03 116 views
6

我试图改变我的EditText的下划线颜色与this thread.改变颜色的EditText的下划线

的帮助下,我做了同样的事情 - 这是EditText设置为@drawable/edt_bg_selectorandroid:background

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:id="@+id/editText4" 
     android:layout_weight="1" 
     android:elevation="0dp" 
     android:background="@drawable/edt_bg_selector" /> 

edt_bg_selector

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

... edt_bg_normal.xml ...

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:bottom="1dp" 
     android:left="-2dp" 
     android:right="-2dp" 
     android:top="-2dp"> 
     <shape android:shape="rectangle" > 
      <stroke 
       android:width="1px" 
       android:color="@color/colorWhite" /> 

      <solid android:color="#00FFFFFF" /> 

      <padding 
       android:bottom="5dp" 
       android:left="5dp" 
       android:right="5dp" 
       android:top="5dp" /> 
     </shape> 
    </item> 
</layer-list> 

...最后,edt_bg_selected.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:bottom="1dp" 
     android:left="-2dp" 
     android:right="-2dp" 
     android:top="-2dp"> 
     <shape android:shape="rectangle" > 
      <stroke 
       android:width="1px" 
       android:color="@color/colorWhite" /> 

      <solid android:color="#00FFFFFF" /> 

      <padding 
       android:bottom="5dp" 
       android:left="5dp" 
       android:right="5dp" 
       android:top="5dp" /> 
     </shape> 
    </item> 
</layer-list> 

有了这个代码,我可以看到下划线的颜色变为白色Android Studio中的设计编辑器。但是当我在Android设备上运行这个项目时,更改还没有完成。选中的EditText的下划线是我的primaryColor,未选中的EditText是黑色。

的Android工作室设计编辑器:

Android studio design editor

项目运行Android设备上:

android device

这是否有什么与我的应用程序的选择的主题?或者我错过了什么?

回答

6
<EditText 
    android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Something or Other" 
      android:backgroundTint="@android:color/holo_green_light" /> 
4

加入这个属性到你的活动主题:

<style name="AppTheme" parent="Theme.AppCompat"> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@android:color/white</item> 
    <item name="colorControlHighlight">@android:color/white</item> 
</style> 
2

编程只是实现这一行:

inputText.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.error), PorterDuff.Mode.SRC_ATOP);

inputText是你EditText对象。

+0

我试过了,它也有效。只有一件事 - 在Android 6.0 Marshmallow(API 23)context.getResources()。getColor()已弃用,因此我使用了ContextCompat.getColor()。我的问题的解决方案是在我的评论上述 谢谢 – MoOoG

+0

我认为,当你失去焦点,它保持与颜色(应返回到默认的颜色) –

0

好吧,我不知道发生了什么,但是代码,我上面贴的作品。我没有改变任何东西,但我重新启动了Android工作室。

我张贴在此之前,我没有在该项目下生成重建>重建项目,并没有帮助。

如果有人可以解释为什么会这样或者我应该在这种情况下做什么,我将不胜感激,但问题就解决了。