2011年2月22日火曜日

[android]TabLayoutを縦に並べたい!

Tab表示をする方法は「TabHost、TabWidget」を使う。

@yanzmさんの解説を参照しました。

Tab実装方法は
1、Viewをtab毎に用意する方法
2、ActivityをintentでTabActivityに設定する方法
があるらしいです。

で、とりあえず自分のアプリに組み込んで、それを動かしてみました。






それっぽい!
でも、出来れば横向きにしたとき、Tabを右側に縦表示したい。

ここからが本題で、
このTabWidgetはどうやら縦設定にすることが出来ない。
じゃあどうするのかというと、
Tab表示を諦める!

諦めるというか、TabHostやTabWidgetでの実装ができないので、
似た様なものでTab表示を実装する、という結論になりました。
※ホントは出来たりするのかも?

やり方は、ImageButtonを使う方法にしました。
@t2lowさんのサンプルコードを参考にさせていただきました。

■TabTest.java
public class Tabtest extends Activity implements Runnable, OnClickListener {
    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.main);
        gridView = (GridView) findViewById(R.id.list);

        …中略…

        int[] tabs = { R.id.tab1, R.id.tab2, R.id.tab3 };
        for (int tab : tabs) {
            View v = findViewById(tab);
            v.setOnClickListener(this);
        }
    }

    public void onClick(View view) {
        switch (view.getId()) {
        case R.id.tab1:
            hogehoge(); //リストデータ読み込み+表示
            break;
        case R.id.tab2:
            hogehoge(); //リストデータ読み込み+表示
            break;
        case R.id.tab3:
            hogehoge(); //リストデータ読み込み+表示
            break;
    }

    private void hogehoge() {
        …中略…
    }
}

■layout/main.xml 縦向きの時に表示
  
  
      
  
          
  
      
  
      
  
          
  
          
  
          
  
      
  

■layout-land/main.xml 横向きの時に表示

  
  
      
  
          
  
              
          
          
  
          
  
              
  
              
  
              
  
          
      



で、その出力結果がこうなりました。



なんかごちゃごちゃしちゃってあんまりキレイじゃない…
でも、横画面のときのTab表示が縦にするのは解決しました。

【2011/4/4 追記】
@yanzmさんが横タブの方法についてちゃんと記載されています。
Y.A.M の雑記帳:Android タブをサイドにする

これ見ると、自分の記載が恥ずかしい。

0 件のコメント:

コメントを投稿