Activityのタイトルバーでマーキー表示する
こんな感じにタイトルバーに表示する文字列をFading領域から横スクロールしたい。いわゆるマーキー表示って奴だ。
- Activity中に書くサンプル
Window window = this.getWindow(); Class phoneWindowClass = Class.forName("com.android.internal.policy.impl.PhoneWindow"); Field field = phoneWindowClass.getDeclaredField("mTitleView"); field.setAccessible(true); TextView title = (TextView)field.get(window); title.setSingleLine(); title.setEllipsize(TruncateAt.MARQUEE); title.setHorizontallyScrolling(true); title.setFocusableInTouchMode(true); //例外処理は省く this.setTitle("マーキー表示する文字列"); title.requestFocus();
こんなベタベタのリフレクションは久しぶりだ。
フィールド名が変わったらアウトだしバッドノウハウだと思うが、Titleを描画するTextViewはPhoneWindowsではprivateスコープなのでアクセスできないし、Viewを張り替えるといろいろと問題が出るのでやむなし。
実現出来たものの、フォーカスを得てないとマーキー表示にならない仕様は使いづらいな。