開発時にTextViewが反映されないという問題が発生し、(多少強引ではあるが)解決したのでその方法のメモ。

発生した問題


ボタンを押したときにTextViewにsetTextで文字列を表示する処理を書いていたが、ボタンを押してもTextViewが反映されなかった。TextViewに対してinvalidateをしても表示されず。

原因


レイアウトの多重層が問題のようで、問題のTextViewもかなり深い層に存在していた。
この場合、TextViewより上層のViewが更新されなければ下層の位置にあるTextViewが反映されない。

解決法


今回の場合は多少強引ではあるが、TextViewのsetTextの後、最上層のViewに対してinvalidateすることで下層のViewすべてを再描画することで解決。
実際にしてはいないがレイアウトの深さを解消することでも解決すると思われる。




※不思議なことに今回の問題が発生したのはXperia Z4のみで手持ちのNexus7(2012)、Nexus7(2013)、L01では同じ現象が見られなかった。