在Android中,xml属性singleLine是否已经被弃用?

8 浏览
0 Comments

在Android中,xml属性singleLine是否已经被弃用?

singleLine 在 XML 布局文件中用于 TextViewEditText,示例如下:


一些人在 Stack Overflow 上表示 singleLine 已经过时,而其他人仍建议使用它。有时候甚至在 maxLines="1" 不起作用时也似乎需要使用它(参见 这里这里,以及这里)。

文档应该是回答这个问题的地方,对吗?在这里,它们说:

此常量已在 API 级别 3 中过时。

此属性已经过时。使用 maxLines 来改变静态文本的布局,使用 textMultiLine 标志在 inputType 属性中来处理可编辑文本视图(如果同时提供 singleLine 和 inputType,则 inputType 标志将覆盖 singleLine 的值)。

然而,在TextView 文档中,并没有指示 android:singleLinesetSingleLinesetTransformationMethod 已经过时。相比之下,这些 TextView 文档确实指出了其他一些东西,如 STATUS_BAR_HIDDENfitSystemWindows 已过时。那么,singleLine 的过时是一个遗漏,还是被"取消过时"了,或者其他什么情况呢?

此问题之前已经被提问过,但并不是问题的主要焦点(也没有得到答案)。

0
0 Comments

问题的出现原因是在一个改动中添加了deprecated属性,但是无法确定这个改动是不是一个遗漏,或者是被取消了,或者是被增强了。解决方法是查看一些相关的回答并找到最有深度和权威的答案。

0
0 Comments

在Android中,是否将xml属性singleLine废弃了?这个问题的出现是因为singleLine属性在性能和可靠性方面存在问题,相对于其替代者maxLines而言。singleLine属性使用SingleLineTransformationMethod来替换TextView中的换行符和回车符,而maxLines属性仅根据行数调整TextView的高度,不进行字符替换。这种替换字符的方法可能导致singleLine属性在某些情况下出现意外的错误(例如使用自定义字体)。因此,singleLine属性被废弃了。然而,由于许多旧的Android应用程序仍在使用singleLine属性,并且有时它仍然是有用的(例如当您想要在一行上显示整个文本并忽略换行符和回车符时),所以它并不会被完全移除。虽然废弃不一定意味着API将被移除,但它的使用被不鼓励,但可能仍然被允许使用。关于singleLine属性的废弃,可能是Android文档中的一个疏忽,因为它在Android的早期开发阶段就已经被废弃了,但并不是所有文档都进行了更新。至于为什么文档推荐使用maxLines属性,可能是因为它提供的行为与singleLine属性不同。

0
0 Comments

在Android中,属性singleLine是否被弃用了? 这个问题的出现的原因是因为在使用属性ellipsize和maxLines=1时可能会导致某些设备崩溃。之前的Lint版本建议将singleLine=true替换为maxLines=1,但在使用ellipsize时不应该这样做。现在,我认为singleLine已经被弃用了,我们应该想出一个新术语..."deprecatedish"? 这条评论已经四年了。四年前,这是"deprecatedish"和不清楚的,现在它仍然是。这真是疯狂。

解决方法:

根据上述问题,我们应该避免在使用属性ellipsize时将singleLine设置为true。相反,我们应该使用maxLines=1来限制文本的行数,并在需要时使用ellipsize属性来指定文本截断的方式。这样可以避免在某些设备上崩溃的问题。

代码示例:


通过将maxLines设置为1,我们限制了TextView只显示一行文本。而通过使用ellipsize属性,我们可以指定文本截断的方式,例如在末尾加上省略号。

在Android中,属性singleLine被认为是已弃用的。在使用属性ellipsize时,应避免将singleLine设置为true。相反,应该使用maxLines=1来限制文本的行数,并在需要时使用ellipsize属性来指定文本截断的方式。这样可以避免在某些设备上崩溃的问题。

0