摆脱:AllCapsTransformationMethod'调用者没有启用长度更改'

Pou*_*hor 8 android

我注意到我的日志中有很多时候这个警告,我想知道如何摆脱它.

我的理解是来自这个地方的AllCapsTransformationMethod有禁止状态.

  • 怎么解决?我应该在哪里调用该方法setLengthChangesAllowed(boolean allowLengthChanges)
  • 为什么会出现?
  • 它对处理有多大影响(我在非常低的内存设备上运行)?

谢谢.

PS:如果你知道更好的标签,我会添加它们.

sfe*_*era 7

该方法setLengthChangesAllowed(boolean)将由TextViewin 调用setTransformationMethod(TransformationMethod).布尔标志的值被评估这样的(我只检查API 18): mAllowTransformationLengthChange = !isTextSelectable() && !(mText instanceof Editable);.

因此,如果文本是可选择的或可编辑的(例如,您的组件是一个EditText),AllCapsTransformationMethod则将忽略该文本,您将收到警告消息W/AllCapsTransformationMethod: Caller did not enable length changes; not transforming text.

希望回答你的问题:

  • 如果您希望应用转换,则使用不可选择的不可编辑文本组件; android:textAllCaps对于可编辑/可选文本,请使用不设置为true的文本组件 - 应该除去警告.你不能真正打电话,setLengthChangesAllowed(boolean)除非你使用可能有效的反射伏都教,破坏事物并使你的代码更难维护.
  • 见上面的解释.我希望它有所帮助
  • 获得警告基本上意味着你AllCapsTransformationMethod在记忆中有一个无用的东西,它会偶尔产生警告,但不会做任何事情.性能影响应该是最小的,趋向于零.最好手动将可编辑/可选文本设置为大写,而不是应用该textAllCaps属性而不起作用.