android edittext 下划线没了,关于android:如何在EditText中隐藏下划线

本文介绍了如何在Android中去除EditText的下划线。通过设置`android:background="@android:color/transparent"`或`android:background="@null"`可以达到隐藏下划线的效果,但可能会丢失默认的边距。为保留边距,可以使用自定义可绘制背景或修改九宫格图片。此外,还可以通过编程方式设置背景透明或为EditText设置样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何隐藏EditText下栏(结尾有小衬线的提示行)?

也许有更好的方法来做我想做的事情:我有一个带有EditText的布局。通常,在用户可以点击它并开始输入或编辑文本的地方,这会显示良好。

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

作为一个停止间隙度量,我将通过删除EditText并替换一个TextView来实现这一点。我认为这会产生期望的结果,但这似乎是一种迂回的昂贵方法,通过改变属性来做一些应该很容易做的事情。

可能重复?stackoverflow.com/questions/5478109/…

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

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

android:background="@null"

正如Ha1ogen所说,最好的答案是定制一个可绘制的。从用于普通编辑文本字段的9补丁开始。修改它可以去掉底线和其他你不想要的图形。这样,修改后的EditText将具有与普通EditText字段相同的页边距和整体外观。如果只将背景设置为空,它将丢失页边距。

用这个:android:background="@android:color/transparent"。

如果我已经有了其他颜色的背景,比如灰色,在这种情况下如何删除底线/下划线?

在android 19中,使用android:background="@android:color/transparent"会导致相同的利润损失问题…有没有一个例子,有人创建这样一个定制的抽屉?

如何在Java中编程?

如果我们想返回默认值,默认背景是什么?

语法已更改。以编程方式执行:myedittext.backundgroundresource(r.color.fui-transparent);。我曾经将可见性设置为false,以便在用户单击我的自定义文本框时不显示底线并发送一条PerformClick消息,但是这样做更可靠。

将背景设置为空。

android:background="@null"

这与background="00000000"相同。不太管用。

这对我很有效,但我最终做了android:background="@android:color/transparent,因为@null很可怕。

@理查德为什么埃多克斯1〔3〕可怕?

@空将表示不存在背景。如果我们指定background="00000000",它将使用alpha值"0"绘制白色背景。

"@null"也隐藏闪烁的光标,"@android:color/transparent"不是。

@Vinayakvnaik实际上是透明的黑色。非透明白色,即00ffffff

@卢卡斯诺瓦克,你在哪个安卓版本和设备上看到这个?对我来说,它看起来很好…

@Dicklucas空值并不可怕,它非常有用。在这种情况下,完全可以使用BackbackgroundDrawable(空值);这使得背景成为默认设置,就像你没有设置它一样。(每个布局之间很常见,不仅仅是这个布局)。

@Stevemoretz之所以称为"十亿美元的错误",有一个原因。我尽量避免出现空指针异常。在这种情况下,我特别避免这样做,因为我更愿意明确地了解我想要的背景。在这种情况下,空值只是隐式地将背景设置为透明的,谁知道它在将来的Android版本中将意味着什么。虽然将其设置为android:color/transparent是明确的,而且不仅在将来的android版本中更容易工作,对于其他将查看我的代码的开发人员来说,它也更清晰。

@Dicklucas OK,让我们清除应该发生的空指针异常,因为,地狱如何使用未初始化的指针?但空用于视图中的特殊情况,也用于自定义视图和许多其他情况。您应该更多地参与其中。什么是?@android:color/transparent让我们来看看:00000000,您可以在android包中看到的值与空值相同!即使在appcompateditext类setInternalBackgroundTint(空);中,也会使用和许多其他情况。您最好更多地与空相关,而不是害怕。

请将EditText背景设置为

android:background="#00000000"

它会起作用的。

这会有点效果,但不太合适。如果只删除背景,也会丢失字段周围的边距-它们是默认背景的一部分。正如@ha1ogen所建议的,正确的解决方案是替换一个完全没有底线的不同背景。

如何通过程序撤消此操作

可以将EditText的backgroundTint值设置为特定颜色。如果设置透明颜色,则底线应该消失。

android:backgroundTint="@color/Transparent"

#00000000

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

这比改变整个视图的背景(如其他答案所示)要好得多。

您可以使用setBackgroundResource以编程方式完成:

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

使用任一属性:

android:background="@null"

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

为我隐藏编辑文本的下划线而工作。

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

间距问题来自错误布局。为了修复将textinputlayout的errorEnabled属性设置为false app:errorEnabled="false"的问题。

以下是隐藏它的方法,而不破坏默认填充:

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)

这个答案是完美的,应该被接受。它可以删除背景而不删除默认填充。

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

xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle">

android:top="8dp"

android:bottom="8dp"

android:left="8dp"

android:right="8dp" />

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

这也是一个很好的选择。这是一个设置自定义可拖动的变体。

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

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"

/>

如果编辑文本已经有背景,则可以使用以下内容。

android:textCursorDrawable="@null"

虽然这不能解决这个问题,但对我有帮助。

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

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

其中GeneralEditText是我的EditText,而白色是:

#ffffff

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

如果您使用android:background="@null"作为许多建议,您将丢失填充,edittext将变小。至少是我的情况。

如果你设置背景NULL并尝试上面提供的Java代码,你的应用程序在执行它后就会崩溃。(因为它得到了背景,但它是空的。)这可能很明显,但我认为指出它很重要。

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

然后,不仅删除了背景,而且视图还有根据默认背景计算的填充。因此,出于某种原因,延迟的空设置没有从以前的bg中清除填充。视图上的填充是左/上/右4dp,下13dp(来自Emulator级别21)。

在所有API级别上可能没有相同的最终结果,所以要小心!有人告诉我,如果你测试这个并发现它是可靠的。(还要注意,底部填充物之所以突出,是因为原始的下划线。所以您可能希望在XML中更改它,或者在加载到相等的top之后在代码中重置它…

如果希望此操作影响EditText的所有实例和继承该实例的任何类,则应在主题中设置属性EditTextBackground的值。

@drawable/bg_no_underline

我使用的可绘图的一个例子是:

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

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

当应用时,它将使你的所有编辑文本删除整个应用程序的下划线,你不必手动将样式应用到每一个。

简单地使用这个

editText.setBackgroundColor(Color.TRANSPARENT);

您还可以为EditText定义样式,以便可以共同重新组合所有属性。如果需要多个编辑文本,而这些文本需要具有

将代码放在res/values/styles.xml中

@color/transparence //NO UNDERBAR

1

28dp //COMMON HEIGHT

之后你只需要在你的编辑文本中调用它

android:id="@+id/edit1"

style="@style/MyEditTextStyle"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

android:id="@+id/edit2"

style="@style/MyEditTextStyle"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

程序性使用:editText.setBackground(null)。

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

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

android:background="@null"

在我的例子中,editText.setBackgroundResource(R.color.transparent);是最好的。

它不会删除默认填充,就在条下。

R.color.transparent = #00000000

将背景设置为空

android:background="@null" in your xml

如果使用背景,则必须使用此标记'android:testcursordrawable="@null"'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值