删除EditText中的其他下划线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除EditText中的其他下划线相关的知识,希望对你有一定的参考价值。

我有自定义背景drawable的EditText:

enter image description here

EditText代码:

<EditText
    android:id="@+id/etName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@{ViewModel.isAllowEdit  ? @drawable/profile_et_background_active : @drawable/profile_et_background}"
    android:inputType="@{ViewModel.isAllowEdit ? InputType.TYPE_CLASS_TEXT : InputType.TYPE_NULL}"
    android:text="@={ViewModel.name}"
    android:textColor="@color/main_dark_text_color" />

我正在使用android数据绑定库和MVVM架构。

如果ViewModel将isAllowEdit设置为true,则将EditText背景设置为@ drawable / profile_et_background_active。

如果isAllowEdit为false,则EditText的背景设置为@ drawable / profile_et_background。

此外,我通过将inputType设置为TYPE_NULL来禁止编辑,并通过将inputType设置为TYPE_CLASS_TEXT来允许编辑。

@ drawable / profile_et_background_active代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>

    <item
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="@color/main_elements_line_color" />
        </shape>
    </item>

</layer-list>

@ drawable / profile_et_background代码:

<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

当允许编辑并且用户开始在EditText中键入文本时,在键入的单词下会出现另外的下划线(它只属于当前键入的单词,EditText文本的所有其他部分都没有下划线):

enter image description here

我试图通过向EditText添加颜色过滤器来删除下划线:

et.setColorFilter(getResources().getColor(android.R.color.transparent), PorterDuff.Mode.SRC_IN)

但它不起作用。

如何删除额外的下划线?

更新1

我已经尝试添加@android:color / transparent,我收到错误:

“java.lang.Integer无法强制转换为android.graphics.drawable.Drawable”

更改“@ {ViewModel.isAllowEdit?@ drawable / profile_et_background_active:@ drawable / profile_et_background}”时

to“@ {ViewModel.isAllowEdit?@ drawable / profile_et_background_active:@android:color / transparent}”

更新2

添加InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS对我不起作用。所以我想这不是拼写检查的问题。

答案

您可以将EditText设置为具有自定义透明可绘制或仅使用

 android:background="@android:color/transparent".
另一答案

在xml中使用inputType textNoSuggestions

  <EditText
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:inputType="text|textNoSuggestions"/>

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS是使用代码的等效标志

另一答案

据我所知。在editText中使用它

android:background="@android:color/transparent"

如果你想停止你输入的拼写检查文本然后使用

android:inputType="textNoSuggestions"
另一答案

我已经看到了上面给出的所有有效答案。但在最后一次尝试你可以这样:

 mEditText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void afterTextChanged(Editable editable) {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mEditText.clearComposingText();
                    }
                },200);


            }
        });

ClearComposingText方法将帮助您。希望这可以帮助。

以上是关于删除EditText中的其他下划线的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 EditText 上的空指针异常 [重复]

Edittext下划线与输入布局中的提示之间的差距

EditText下划线禁用颜色[重复]

Android - 设置粗体/斜体后再次使 EditText 正常

Android片段中的EditText值不刷新

如何在 EditText 中隐藏下划线