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

时间:2015-06-22 10:00:27

标签: android

我注意到很多时间在我的日志中发出此警告,我想知道如何摆脱它。

据我所知,它来自this,其中AllCapsTransformationMethod具有禁用状态。

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

感谢。

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

1 个答案:

答案 0 :(得分:6)

方法setLengthChangesAllowed(boolean)将由TextView中的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属性而不起作用。