2017-04-18 45 views
1

我最近遇到一个问题,这是一个EditText的默认下划线栏从默认的黑色的颜色为白色改变。把手都强调

我用这个解决方案,它通过改变EditText上的风格在我看来,最好的做法:

的EditText

<android.support.v7.widget.AppCompatEditText 
    android:id="@+id/nom" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/Activity_Main_EditText_Nom" 
    android:imeOptions="actionNext" 
    android:paddingBottom="10dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="10dp" 
    android:textColor="@android:color/white" 
    android:textColorHint="@color/activityBackground" 
    android:theme="@style/EditTextStyle" 
    android:visibility="gone" 
/> 

style.xml

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowDisablePreview">true</item> 
    <item name="android:windowBackground">@color/activityBackground</item> 
    <item name="windowActionBar">false</item> 
    <item name="actionMenuTextColor">@android:color/white</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@color/colorAccent</item> 
    <item name="colorControlHighlight">@color/colorAccent</item> 
</style> 

有效 !但它也加入到EditText上下划线栏的手柄......

Underlined handlers

任何想法?


回答

通过与@rafsanahmad007讨论,我们终于得到了最终解决方案。

style.xml

<resources> 

    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:windowDisablePreview">true</item> 
     <item name="android:windowBackground">@color/activityBackground</item> 
     <item name="windowActionBar">false</item> 
     <item name="actionMenuTextColor">@android:color/white</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="MyTheme.EditText" parent="MyTheme"> 
     <item name="colorControlNormal">@android:color/white</item> 
     <item name="colorControlActivated">@color/colorAccent</item> 
     <item name="colorControlHighlight">@color/colorAccent</item> 
    </style> 

</resources> 

应用MyTheme到应用程序中,像往常一样。当你想调整的EditText只是添加到它:

的EditText

<EditText 
    ... 
    android:theme="@style/MyTheme.EditText" 
    ... 
/> 
+1

您可以检查这个答案的http:/ /堆栈溢出。com/questions/37824790/how-to-remove-underline-below-edittext-indicator –

+0

@visheshchandra感谢这个链接,这些处理程序/指标/游标有很多名字,我没有遇到过这个!不幸的是,改变EditText的颜色过滤器会带来一些问题,比如禁用从白色到colorAccent的颜色选择等。 –

+0

一般提示:除非你想子类化EditText,否则你不需要使用AppCompatEditText。 – Sufian

回答

0

问题是你的风格主题..父

使用下面的代码:

<android.support.v7.widget.AppCompatEditText 
    android:theme="@style/MyStyle.EditText"/> 

现在,在您styles.xml

<style name="MyStyle.EditText"> 
    <item name="editTextStyle">@style/MyEditTextStyle</item> 
</style> 

<style name="MyEditTextStyle" parent="Widget.AppCompat.EditText"> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@color/colorAccent</item> 
    <item name="colorControlHighlight">@color/colorAccent</item> 
</style> 

尽量不要使用主题直接主题

编辑

添加颜色属性的基本主题也

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@color/colorAccent</item> 
    <item name="colorControlHighlight">@color/colorAccent</item> 
</style> 

确保您在清单中的活动选择主题...

+0

手柄的下划线消失了,但EditText的下划线在未选中时不是白色。我错过了什么 ? –

+0

使用'editText.getBackground().setColorFilter(R.color.white,PorterDuff.Mode.SRC_IN);'...为下划线颜色.. – rafsanahmad007

+0

设置ColorFilter将禁用颜色从白色变为colorAccent当EditText为选择。 –

0

使用此doc.I觉得这个URL会有益你的问题。

http://www.materialdoc.com/edit-text/

+0

感谢您的传递,不幸的是,您的链接并没有真正谈论我的问题:/ –