编辑文本光标显示底线

时间:2016-11-22 15:39:25

标签: android android-edittext

我已经在我的EditText中应用了一个样式,以便在没有选中时改变底线,我这样做:

<style name="JoinMeetingEditText" parent="Widget.AppCompat.EditText">
    <item name="colorControlNormal">@color/edit_text_no_selected_color</item>
    <item name="android:textCursorDrawable">@null</item>
    <item name="android:theme">@style/JoinMeetingEditText</item>
</style>

但EditText中的光标显示如下

enter image description here

如果我删除了<item name="android:theme">@style/JoinMeetingEditText</item>,那么该行不会显示,但我的编辑文字在没有选中时会显示正确的颜色

这就是我在XMl中定义EditText的方法

 <android.support.design.widget.TextInputLayout
        style="@style/JoinMeetingTextInputLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/email"
            android:theme="@style/JoinMeetingEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Email"
            android:inputType="number"
            android:textColor="@color/white"
            android:textSize="16sp">

            <requestFocus />
        </EditText>

3 个答案:

答案 0 :(得分:0)

您可以像这样创建自定义绘图

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item 
    android:state_pressed="true"
    android:color="@color/colorAccent"
    /> <!-- pressed -->    
<item 
    android:state_focused="true"
    android:color="@color/colorPrimary"
    /> <!-- focused -->    
<item 
    android:drawable="@android:drawable/edittext_normal" 
    /> <!-- default -->
</selector>

将此自定义样式用于该edittext的背景中。这可能会对你有帮助。

答案 1 :(得分:0)

在全球&#34; AppTheme&#34;上更改自定义主题的父级像这样: parent="AppTheme"

或共同主题,例如: parent="Theme.AppCompat.Light.NoActionBar"

在您的情况下,自定义主题用作所有EditText子视图(包括光标视图)的主题。当您将AppTheme设置为父级时,它会在EditText属性上重叠光标视图的特殊属性。

我希望这会对你有所帮助。

答案 2 :(得分:0)

我有同样的问题。以下是我如何解决它:https://stackoverflow.com/a/44036429/1439957

P.S。我建议您使用TextInputEditText作为TextInputLayout的孩子,而不是EditText,因为TextInputEditText是专为此设计的。