我在日志中注意到了很多次此警告,并且我想知道如何消除它。
我了解它来自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
属性无效。