Android標準のタブが残念なので

俺用メモ。


Android標準のタブは色々と微妙なところが多い。
俺が欲しいタブの要件
・スクロール可能なタブ。現行のタブも一応HorizontalScrollViewとかに入れれば可能だが、もっと柔軟であって欲しい。
・タブの並びが横並べと縦並べから選べること。横長画面時においてこの点はとても重要だと思う
・もちろん横並べ時にはタブがスクリーンの「下に」置けること
このくらいまでならTabWidgetを工夫すればいいよね的なものではある。
更に必要かもしれないと思う要件
・コンテンツを横スワイプで移動
 Homeあたりを参考にすればいいのかな。好みではないので無くても良いとは思う
・コンテンツ表示をマルチカラム表示にする
 PC向けのSeesmicみたいなの。横長タブレット向け。
そしてこれらを柔軟かつ動的に制御できること(XMLに書いて決め打つのは×)
参考にすべきソース
ウィジェットの基本的な実装
・frameworks/base/core/java/android/widget/TabHost.java
・frameworks/base/core/java/android/widget/TabWidget.java
 あまり参考にならないかもしれない
Activityの基本的な実装
・frameworks/base/core/java/android/app/TabActivity.java
・frameworks/base/core/java/android/app/ActivityGroup.java
・frameworks/base/core/java/android/app/LocalActivityManager.java
 singleActivityMode=falseであるケースについての制御が要注意
マルチカラムに対応するかどうかが非常に大きな問題。
もし対応する場合、「どの画面がイベントをディスパッチするのか」つまり「どの画面が今アクティブなのか」を制御しなければならないという問題が出てくる。単純に考えてもMenuボタンとBackボタンを誰がディスパッチするのかは考慮しなければならない。
まあBackはいい。現行のタブ機構でも各画面にはディスパッチさせていないので親画面が制御すべきなのだろう。
Menuは……どうなんだろうな。あまり何も考えずにマルチカラムでもアクティブ画面は1個でそれ以外は「参照出来るだけ」という位置づけでもいいのだけれど。
うーん……アクティブ画面は常に1個方式が実装的には楽だし一貫した動作になりそうかな……。
ところでTweetDeckが斜めにスワイプすると死によるんだが。
この辺、パフォーマンスの確保とか実装上の楽さとか考えると、この手のスワイプ切り替えはしない方がいいかな。横スワイプってタッチパネルの品質によってはすごく邪魔だし、タッチパネルの品質が良くてもタップと比べると操作として高コストだと思う。

“Android標準のタブが残念なので” への1件の返信

  1. タブ。 全く全く同感。
    なんでスクロールできないの?なんで上しかないの?
    なんで縦置きできないの?
    全く同感。

コメントを残す

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