like life lives

技術以外のことに興味が寄りすぎな技術ブログ

Android:アクションバーの上の位置にタブを表示させる

Androidでアクションバーをいろいろいじっていたら面白い現象に遭遇した。


f:id:sugar_affordance:20130818100339p:plain


アクションバーの上にアクションバーのタブが表示されている。
普通はこう。


f:id:sugar_affordance:20130818100354p:plain


...まあできたからどうだって、わけでもないんだけれども。

中には「俺は画面の一番上にタブを出したい…そのためなら警察に捕まってもいい」って人もいると思うので、いないと思うけどコードは紹介する。

実装に必要なコードは下記のとおり。

・確認端末:HTC-J (Android4.0.3)

アクションバーを実装するActivityのonCreateで

     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
         
          ActionBar actionBar = this.getActionBar();


          // アクションバーのタブを設定
          Tab newTab1 = actionBar.newTab();
          newTab1.setTag("tab1");
          newTab1.setText("タブ1");
          newTab1.setTabListener(this);
          actionBar.addTab(newTab1);
         
          Tab newTab2 = actionBar.newTab();
          newTab2.setTag("tab2");
          newTab2.setText("tabu 2");
          newTab2.setTabListener(this);
          actionBar.addTab(newTab2);
         
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
         
         
          // アクションバーの独自ビューを設定
          actionBar.setCustomView(R.layout.actionbar);
          actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
     }

つまり、
・アクションバーのタブ機能
・独自ビュー設定
これらを同時に行うと、アクションバーの上にタブが表示される。

ちなみにサポートパッケージでもできた。(IS03)