Toast の表示時間を変更する


結論からいうと、まじめに対応するのは断念しました。
代わりに Toast もどきのクラスを作って対応しました。

Toast のソースを読むと。
show() の中で INotificationManager#enqueueToast() を呼んでいます。
INotificationManager の実体は、 NotificationManagerService です。
この中で、Handler#sendMessageDelayed() を使って、表示時間を制御しています。
LENGTH_LONG ならば、3.5秒で、それ以外なら 2秒です。

表示時間を変更するには、NotificationManagerService を改造する必要があります。
NotificationManagerService は、システムに常駐しているサービスなので、いろいろ面倒です。
ということで、まじめに対応するのは断念しました。

代わりに Toast もどきのクラスを作って対応しました。
NotificationManagerService で行っている処理は、Toast のキュー管理と表示時間の制御です。
キュー管理は諦めて、表示時間の制御を行うクラスを作成しました。
Toast の表示と消去は、TN クラスで行っていますが、private になっているため、この部分も作成しました。

ソースコードは code.google にあります。

関連記事
Toast の移植
Toast が固まるのを回避する
Toast の文字を大きくする
・Toast の表示時間を変更する


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です