アラのアラアラしい日記

こっそりかいてます

TabLayoutのタブを無効化する方法

こんにちは!腹筋ローラーする人です。
昼は会社で2週間ごとにiOS, android開発を交互にして、夜は家でruby触る生活を1ヶ月続けたらメンヘラになりました。弱めです。
個人的に書いてて楽しいのはrubyですが、型がないと不安になるようになりました。

今回はandroid開発でTabLayoutの操作で地味にハマったのでメモ。

tabs.addTab(tabs.newTab().setText("TAB0"));
tabs.addTab(tabs.newTab().setText("TAB1"));
tabs.addTab(tabs.newTab().setText("TAB2"));

例えばこのようにタブを追加している場合で、
ページロード中などのタブ変更をユーザにさせたくない時にタブのタッチを無効化にしたい場合、

tabs.setEnabled(false);

このようにしてまるっと全てのタブを無効化できると思っていたのですがこれうまくいかないんです。

むっちゃググりながら情報拾い集めてたどり着いた結果がこちら。TabLayoutの無効化の場合は、

for ( int i = 0; i < tabs.getChildCount(); i++ ) {
    ((LinearLayout)tabs.getChildAt(0)).getChildAt(i).setEnabled(false);
}

こんな感じで、一度レイアウトでタブを拾ってから一つずつsetEnableしてあげないとダメみたいですね。
有効化するときはもちろんtrueで大丈夫です。

FragmentTabHostとかを使っている場合はまた実装方法が変わってくると思いますが、困ったらお試しください。