如何在EditText中隐藏下划线

Per*_*man 444 android textview android-edittext

如何隐藏EditText下划线(两端带有小衬线的提示行)?

可能有更好的方法来做我想要的:我有一个带有EditText的布局.通常,这显示在用户可以点击它并开始输入或编辑文本的位置.

但是,有时我想使用相同的布局(简化其他逻辑)以只读方式显示相同的数据.我希望演示文稿类似 - 它应该具有相同的高度和相同的字体,但没有下划线.

作为一种权宜之计,我将通过删除EditText并替换TextView来实现这一点.我认为这会产生预期的结果,但这似乎是一种迂回的做法,通过改变属性来做一些应该很容易做到的事情.

ha1*_*gen 952

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

android:background="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

要么

android:background="@null"
Run Code Online (Sandbox Code Playgroud)

  • 使用这个:`android:background ="@ android:color/transparent"` (121认同)
  • ha1ogen说,最好的答案是制作一个可定制的抽屉.从用于普通EditText字段的9补丁开始.修改它以去掉你不想要的下划线和其他图形.这样,修改后的EditText将具有与普通EditText字段相同的边距和整体外观.如果只是将背景设置为null,则会丢失边距. (7认同)
  • 在Android 19中,使用`android:background ="@ android:color/transparent"`会导致相同的边距丢失问题...是否有人创建这样的自定义drawable? (6认同)
  • 如果我已经有其他颜色的背景怎么办,让我们说灰色,在这种情况下如何删除下划线/下划线? (3认同)
  • 我们如何在java中以编程方式执行? (2认同)
  • 如果我们想将其恢复为默认值,那么默认背景是什么? (2认同)

小智 99

将背景设置为null.

android:background="@null"
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但我最终做了`android:background ="@ android:color/transparent`因为`@ null`是可怕的. (12认同)
  • @Richard为什么``@ null``吓人? (3认同)
  • 这与background ="#00000000"相同.不起作用. (2认同)
  • "@null"也隐藏了闪烁的光标,"@ android:color/transparent"没有. (2认同)

Yas*_*maz 32

您可以设置EditTextbackgroundTint值,以特定的颜色.如果设置透明色,则下划线应该消失.

android:backgroundTint="@color/Transparent"

<color name="Transparent">#00000000</color>

但你可以使用它Api v21(Lollipop)或更高


小智 25

请将您的编辑文字背景设置为

android:background="#00000000"

它会工作.

  • 它将完成一些工作,但不能正常工作。如果仅删除背景,那么您还将损失字段周围的边距-它们是默认背景的一部分。正确的解决方案是替换根本没有下划线的其他背景,如@ ha1ogen所示 (3认同)

Rob*_*rto 21

您可以使用setBackgroundResource以下方式以编程方式执行

editText.setBackgroundResource(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么,但它不起作用。线还在那儿 (2认同)

Aja*_*des 15

使用任一属性:

android:background="@null"
Run Code Online (Sandbox Code Playgroud)

要么

android:background="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

为我工作隐藏EditText的下划线.

但是,请注意它会导致我周围的TextInputLayout出现间距问题 EditText


Pau*_*eau 11

我做的是创建一个Shape drawable并将其设置为背景:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <padding
        android:top="8dp"
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp" />

    <solid android:color="#fff" />

</shape>
Run Code Online (Sandbox Code Playgroud)

注意:我实际上使用了firelds的值@dimen@color值,但为了清楚起见,我在这里简化了形状文件.


and*_*per 10

这是一种隐藏它的方法,而不会破坏默认填充:

fun View.setViewBackgroundWithoutResettingPadding(background: Drawable?) {
    val paddingBottom = this.paddingBottom
    val paddingStart = ViewCompat.getPaddingStart(this)
    val paddingEnd = ViewCompat.getPaddingEnd(this)
    val paddingTop = this.paddingTop
    ViewCompat.setBackground(this, background)
    ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}
Run Code Online (Sandbox Code Playgroud)

用法:

editText.setViewBackgroundWithoutResettingPadding(null)
Run Code Online (Sandbox Code Playgroud)


Har*_*ngh 9

就我而言,我使用自定义背景来编辑文本,因此将背景设置为 @null 或将 tint 设置为透明不是我的解决方案,所以我玩了一个对我非常有用的小技巧,我只是设置

android:inputType="textVisiblePassword"
Run Code Online (Sandbox Code Playgroud)

它可以很好地完成工作......它不是最佳解决方案,但它有效


Dar*_*ush 9

如果您在TextInputLayout 中使用EditText,请按如下方式使用:app:boxBackgroundMode="none"

<com.google.android.material.textfield.TextInputLayout
    app:boxBackgroundMode="none"
    ...
    >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)


Reh*_*han 7

在您的 XML Edittext 中使用此代码

android:background="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

如下代码所示

         <EditText
                    android:id="@+id/EditText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/transparent"/>
Run Code Online (Sandbox Code Playgroud)


liv*_*ove 5

您还必须设置minWidth,否则如果文本为空,光标将消失.

        <EditText
            android:id="@+id/et_card_view_list_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="30dp"
            android:layout_weight="1"
            android:inputType="text"
            android:text="Name"
            android:background="@android:color/transparent"
            />
Run Code Online (Sandbox Code Playgroud)


ben*_*n97 5

我有这样的东西非常有用:

generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)

其中generalEditText是我的EditText,白色是:

<color name="white">#ffffff</color>
Run Code Online (Sandbox Code Playgroud)

这不会删除填充,您的 EditText 将保持原样。只有底部的线将被删除。有时这样做更有用。

如果您使用android:background="@null"尽可能多的建议,您将丢失填充并且 EditText 变得更小。至少,这是我的情况。

一个小小的注意事项是,如果您将背景设置为 null 并尝试我上面提供的 java 代码,您的应用程序将在执行后立即崩溃。(因为它获取背景但它是空的。)这可能很明显,但我认为指出它很重要。


pra*_*ute 5

只需使用这个

 editText.setBackgroundColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)