edittext – 如何隐藏underbar

从代码中,我该如何隐藏EditText underbar(在底部有小衬线的提示行)?

可能有更好的方法来做我想要的:我有一个EditText的布局。 通常情况下,用户可以点击它并开始input或编辑文本。

然而,有时候,我想使用相同的布局(简化其他逻辑)以只读的方式显示相同的数据。 我想要的演示文稿是相似的 – 它应该有相同的高度和相同的字体,但没有underbar。

作为一个权宜之计,我将通过删除EditText并replaceTextView来实现这一点。 我认为这样做会产生理想的结果,但是看起来像是一个昂贵的方式来做一些应该很容易通过改变属性来做的事情。

你可以设置EditText有一个自定义的透明绘制或只使用android:background="@android:color/transparent"

将背景设置为空。

 android:background="@null" 

请将您的edittext背景设置为

android:background="#00000000"

它会工作。

您可以将EditTextbackgroundTint值设置为特定的颜色。 如果你设置透明的颜色,underbar应该消失了。

android:backgroundTint="@color/Transparent"

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

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

您可以使用setBackgroundResource以编程方式执行此操作:

 editText.setBackgroundResource(R.color.transparent); 

我所做的就是创build一个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> 

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

使用任一属性:

 android:background="@null" 

要么

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

为我隐藏了下划线

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

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

 android:textCursorDrawable="@null" 

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

那么不仅背景被移除,而且视图仍然具有从默认背景计算的填充。 所以由于某些原因,延迟的null设置不能清除前一个bg的填充。 视图上的填充是左/上/右4dp,底部13dp(来自仿真器级别21)。

可能在所有API级别上都没有相同的最终结果,所以要小心! 有人告诉我,如果你testing这个,并发现它可靠。 (另外请注意,底部填充是因为原始底部的下划线突出显示,因此您可能需要将其更改为XML,或在代码重置为等于顶部之后将其重置。