方法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
屬性,而不起作用。