TextViewのMarqueeが動かない問題に終止符を

TextViewのMarqueeが動かない問題でいつも悩んでいるので色々なところを参考にして以下のクラスを作った。これならどの場面でも動くことは動く。

以下が参考になる。

http://saways.blogspot.jp/2011/10/textview-marquee.html
 saways.blogspot.jp 

どちらも最終的な結論は「isFocuse()でtrueを返せ!」なんだけど、isFocuse()でtrueを返すとフォーカスがTextViewにあることになるのでキーボードが開けないという困ったことが起こる。なので、StackTraceからMarqueeに必要な関数から呼ばれているかを判定してtrueを返答するようにしてるんだろうけどこれだと関数名が変わったり、別の箇所から呼ばれたりとRefactorされただけで動かなくなってしまいそうで怖い。

実際にTextViewの中身を見ると && (isFocuse() || isSelected()) で判定をしているので、どちらかを返答すればよいのだからisSelected()でtrueを返答してあげたほうが実害が少ないのでこっちを採用することで僕の環境だと上手く動いた。XMLで色々やったりしてもどうしても動かない箇所が出てくるのでこれで動かすのが今のところのベスト。もし違う実装が見つかったらまた書くかも。