Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何创建EditText文本下的行?_Android_Android Edittext_Android Background - Fatal编程技术网

Android 如何创建EditText文本下的行?

Android 如何创建EditText文本下的行?,android,android-edittext,android-background,Android,Android Edittext,Android Background,默认情况下,android.widget.EditText的文本下有一行。这在技术上是如何做到的?我检查了EditText类的属性,但找不到在哪里执行此操作 我想知道这条线在技术上是一个背景,但是这个背景设置在哪里呢?特别是,由于它只是一个背景,Android如何确保这条线是在文本下方而不是在文本后面画的?答案与证明/链接来源高度赞赏 是的,此下划线是背景,可能是ColorStateList(例如,按下时它会改变颜色),但如果您在Android 4.x或更早版本(预材质设计)上运行代码,则此背景

默认情况下,
android.widget.EditText
的文本下有一行。这在技术上是如何做到的?我检查了
EditText
类的属性,但找不到在哪里执行此操作

我想知道这条线在技术上是一个背景,但是这个背景设置在哪里呢?特别是,由于它只是一个背景,Android如何确保这条线是在文本下方而不是在文本后面画的?答案与证明/链接来源高度赞赏


是的,此下划线是背景,可能是
ColorStateList
(例如,按下时它会改变颜色),但如果您在Android 4.x或更早版本(预材质设计)上运行代码,则此背景是固定的位图/可绘制的

EditText
有一个
android:background
属性,但它也存在于所有其他
视图中。因此它设置在
视图
的源代码中,而不是扩展
编辑文本
。通过样式化/主题化设置指向正确可绘制背景的指针(在您的示例中)

EditText
正在使用
TextPaint
getPaint
方法),该方法可用于在字母之间/上方/下方/旁边添加一些额外的间距,以确保不重叠。此外,drawable可能具有
填充
属性-可以在最后一行像素中绘制线条,但将底部填充设置为
1px
,从而确保此
视图的内容
(在这种情况下,
EditText
)不会在填充下/填充上绘制(但drawable会)-如果具有高度的
包装内容
,则更早的
视图
将稍微展开


很抱歉回答不太准确,这个主题需要更多的深入研究和资源搜索,但我的观点可能会帮助您自己找到答案

谢谢,这给了我很好的起点。找到定义
editTextStyle
属性的样式(从my AppTheme开始在层次结构中向上搜索)以及
editTextBackground
属性。因此,我现在可以研究
editTextBackground
属性引用的drawable来理解它。