2015-06-22 17 views
5

我注意到很多時候這個警告在我的日誌中,我想知道如何擺脫它。擺脫:AllCapsTransformationMethod'調用者沒有啓用長度變化'

我明白它來自this其中AllCapsTransformationMethod具有禁用狀態。

  • 如何解決?我應該在哪裏調用方法setLengthChangesAllowed(boolean allowLengthChanges)
  • 它爲什麼會出現?
  • 它對處理有多大影響(我正在非常低的內存設備上運行)?

謝謝。 PS:如果你知道更好的標籤,我會添加它們。

回答

5

方法setLengthChangesAllowed(boolean)將由TextViewsetTransformationMethod(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屬性,而不起作用。