AllCapsTransformationMethod

AllCapsTransformationMethod

我在日志中注意到了很多次此警告,并且我想知道如何消除它。

我了解它来自this,其中AllCapsTransformationMethod具有禁用状态。

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

  • 谢谢。

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

    最佳答案

    setLengthChangesAllowed(boolean)方法将由TextView中的setTransformationMethod(TransformationMethod)调用。 bool 标志的值是这样评估的(我只检查了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属性无效。
  • 10-08 14:26