我怎样才能隐藏的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:
您可以设置EditText
的backgroundTint
值到一个特定的颜色。 如果设置透明色,底线应该走了。
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