如何隐藏下划线的EditText(How to hide underbar in EditText)

2019-07-17 10:54发布

我怎样才能隐藏的EditText下划线(与小衬线提示行的结束)?

有可能是一个更好的办法做我想做的:我有一个EditText的布局。 通常情况下,这显示细腻,用户可以点击它,并开始输入或编辑文本。

然而,有时,我想用相同的布局(简化其他逻辑)在只读方式显示相同的数据。 我想呈现是类似的 - 它应该具有相同的高度和相同的字体,但没有下划线。

作为权宜之计,我会通过删除的EditText而代以一个TextView来实现这一点。 我认为,这将得到期望的结果,但它似乎是一种迂回的昂贵的方式做一些事情,应该是很容易通过改变属性做。

Answer 1:

您可以设置EditText有一个自定义的透明可拉伸或只使用

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

要么

android:background="@null"


Answer 2:

背景设置为null。

android:background="@null"


Answer 3:

请设置您的EditText背景

android:background="#00000000"

它将工作。



Answer 4:

您可以设置EditTextbackgroundTint值到一个特定的颜色。 如果设置透明色,底线应该走了。

android:backgroundTint="@color/Transparent"

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

但是你可以在使用本Api v21(Lollipop)或更高版本



Answer 5:

程序可以用做setBackgroundResource

editText.setBackgroundResource(android.R.color.transparent);


Answer 6:

使用任一属性:

android:background="@null"

要么

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

工作对我来说隐藏的EditText的下划线。

但是,请注意,然后导致间距问题与我周围的TextInputLayout EditText



Answer 7:

这里有一个方法来隐藏它,不会损坏默认填充:

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)
}

用法:

editText.setViewBackgroundWithoutResettingPadding(null)


Answer 8:

我所做的就是创建一个形状绘制,并设置为背景:

<?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>

注:我实际使用@dimen@color值的firelds,但是我在这里简单的形状文件的清晰度。



Answer 9:

你必须设置一个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"
            />


Answer 10:

如果您编辑文本已经有一个背景,那么你可以使用以下。

android:textCursorDrawable="@null"


Answer 11:

我有这样的事情,这是非常非常有用的:

generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);

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

<color name="white">#ffffff</color>

这不会移除填充和您的EditText将保持原样。 只有在底部的线条将被删除。 有时它是更有益的不喜欢这样。

如果您使用android:background="@null"许多建议你失去的填充和EditText上变小。 至少,这是我的情况。

一个小侧面说明是,如果你设置的背景空,试试我上面提供的Java代码,你的应用程序将在执行后立即崩溃。 (因为它得到的背景,但它是空的。)这可能是显而易见的,但我想指出它是非常重要的。



Answer 12:

我发现的最奇怪的事情! 如果你将其设置为null使用数据绑定: android:background="@{null}"

那么不仅是去除背景,但认为还是有一个从默认的后台计算的填充。 因此,出于某种原因推迟空设置不清除从以前的BG填充..? 视图上的填充左/顶部/右4DP,底部13dp(从仿真器级21)。

可能不会对所有API级别相同的最终结果,所以要小心! 有人告诉我,如果你测试这一点,觉得可靠。 (另请注意,该底部填充坚持,因为这下划线的是在原来的了。所以,你可能会想改变它在XML,或者它加载到等于顶部后重置它的代码...



Answer 13:

您还可以定义一个样式为您EDITTEXT这样你就可以重新组合在共同的所有属性。 如果你有多个编辑文本需要有行为这是非常强大

将代码放在RES /价值/ styles.xml

 <style name="MyEditTextStyle" parent="@android:style/TextAppearance.Widget.EditText"> <item name="android:background">@color/transparence</item> //NO UNDERBAR <item name="android:maxLines">1</item> <item name="android:height">28dp</item> //COMMON HEIGHT </style> 

之后,你只需要调用它的EDITTEXT

                   <EditText
                    android:id="@+id/edit1"
                    style="@style/MyEditTextStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
                   <EditText
                    android:id="@+id/edit2"
                    style="@style/MyEditTextStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />


Answer 14:

如果您希望这会影响和EditText上的所有实例,从它继承任何类,那么你应该在你的主题设置属性,editTextBackground值。

  <item name="android:editTextBackground">@drawable/bg_no_underline</item>

我用的是可绘制的一个例子是:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
     android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
     android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
     android:insetTop="@dimen/abc_edit_text_inset_top_material"
     android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
    <selector>
      <item android:drawable="@android:color/transparent"/>
    </selector>
</inset>

这是稍微修改默认的材料设计实现是什么版本。

当应用它将使所有的EditText上删除整个应用程序的下划线,而你不必样式应用到每个手动每一个人。



Answer 15:

只需使用这

 editText.setBackgroundColor(Color.TRANSPARENT);


Answer 16:

以编程方式使用: editText.setBackground(null)

xml使用: android:background="@null"



Answer 17:

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

要么

android:background="@null"


Answer 18:

如果您使用的背景,那么你必须使用这个标记“机器人:testCursorDrawable =‘@空’”



Answer 19:

背景设置为null

android:background="@null" in your xml 


Answer 20:

就我而言, editText.setBackgroundResource(R.color.transparent); 是最好的。

它不会删除默认填充,刚下吧。

R.color.transparent = #00000000



文章来源: How to hide underbar in EditText