setText されている TextView の getLineCount() が 1 になる

Saturday, May 26, 2018

setText されている TextView の getLineCount() が 0 になる

X行以上あったらもっと見るを表示して表示部分を省略するみたいなのを組むときに, 雑だけど以下の感じで組んでたら setText していた TextView の高さが意図せず 0 に

これで対策したぞと思ってたら, 端末およびタイミングによって今度は 1 になることがあって, view の inflate のタイミングの問題で起きているのではと。端末によっては全く問題なく動くものもあるのが厄介だったという感じ。

TextView の getLineCount() は, まだ描画されていなければ 0 が返るので, 描画しきっていないタイミングによって起こってしまうような事案になっているのかなと考えた。

そのため, レイアウトができあがるのをが終了した時点でやるのが確実だということで, OnGlobalLayoutListener をセットし, onGlobalLayout 内で処理を行い, 正確な値を取得しその値を以て処理を行うことで, ひとまず事なきを得た。描画周りは腰を据えないと本当に雰囲気でやってしまいがちなので怖い。

Android

Android の apk に付与される権限の変化を検知する

setText されている TextView の getLineCount() が 0 になる