EditText 文本下方的行是如何创建的?
How is the line under the text of an EditText created?
默认情况下 android.widget.EditText
的文本下方有一行。这在技术上究竟是如何做到的?我检查了 EditText
class 的 source code,但找不到这是在哪里完成的?
我想知道这条线在技术上是一个背景,但是这个背景在哪里设置?特别是,由于它只是一个背景,Android 如何确保这条线绘制在文本下方而不是其后?非常感谢带有证明/来源链接的答案。
是的,这个下划线是背景,可能是 ColorStateList
(例如,按下时它会改变颜色),但是如果你 运行 你的代码在 Android 4.x 或更早版本(预 Material 设计),则此背景已修复 bitmap/drawable
EditText
有一个 android:background
属性,但它也存在于所有其他 View
中。所以它设置在 View
的源代码中,而不是扩展 EditText
。 styling/theming 设置了指向适当背景可绘制对象的指针(在 HERE 中有一些示例)
EditText
正在使用 TextPaint
(getPaint
方法),可用于向字母添加一些额外的间距 between/over/under/next 以确保不重叠。 drawable 也可能具有 padding
属性 - 可以在最后一行像素中画线,但将底部填充设置为 1px
并确保此 View
的内容(在本例中为 EditText
) 将不会绘制 under/over 填充(但 drawable 会绘制)-如果 wrap_content
的高度
会更快 View
扩展一点
很抱歉回答不那么准确,主题需要更多的研究和来源搜索,但也许我的观点可以帮助您自己找到答案
默认情况下 android.widget.EditText
的文本下方有一行。这在技术上究竟是如何做到的?我检查了 EditText
class 的 source code,但找不到这是在哪里完成的?
我想知道这条线在技术上是一个背景,但是这个背景在哪里设置?特别是,由于它只是一个背景,Android 如何确保这条线绘制在文本下方而不是其后?非常感谢带有证明/来源链接的答案。
是的,这个下划线是背景,可能是 ColorStateList
(例如,按下时它会改变颜色),但是如果你 运行 你的代码在 Android 4.x 或更早版本(预 Material 设计),则此背景已修复 bitmap/drawable
EditText
有一个 android:background
属性,但它也存在于所有其他 View
中。所以它设置在 View
的源代码中,而不是扩展 EditText
。 styling/theming 设置了指向适当背景可绘制对象的指针(在 HERE 中有一些示例)
EditText
正在使用 TextPaint
(getPaint
方法),可用于向字母添加一些额外的间距 between/over/under/next 以确保不重叠。 drawable 也可能具有 padding
属性 - 可以在最后一行像素中画线,但将底部填充设置为 1px
并确保此 View
的内容(在本例中为 EditText
) 将不会绘制 under/over 填充(但 drawable 会绘制)-如果 wrap_content
的高度
View
扩展一点
很抱歉回答不那么准确,主题需要更多的研究和来源搜索,但也许我的观点可以帮助您自己找到答案