読者です 読者をやめる 読者になる 読者になる

TabHost

タブで画面を切り替える方法はいろいろあるが、一番基本的な方法はTabHostを使う方法・・・。

TabHost | Android Developers

実はもう非推奨になっているはずだが、削除はされていない模様なので使えるには使えるっぽい・・・。
これを使って、タブで画面切り替えをする・・・。

activity_main.xmlは、

TabHostが、中に含まれるタブ部分TabWidgetや、画面の中身を持つLinearLayoutを複数持つFrameLayoutの切り替えを管理する・・・。
(ちなみに、TabHostはandroid:id="@android:id/tabhost"、TabWidgetはandroid:id="@android:id/tabs"、FrameLayoutはandroid:id="@android:id/tabcontent"というようにandroidを付けないと表示されないようなので注意・・・。)

3画面のうち、タブで選択された画面に切り替えるので、LinearLayoutを3つ用意・・・。
LinearLayoutの中にはTextView・・・。

TextViewのtextには、コンテンツ1~コンテンツ3がそれぞれ表示される・・・。

MainActivity.javaは、

tabHostをリソースから取得したら、tabHost.setupを呼ぶ・・・。
そのあと、順次タブを追加していく・・・。
tabHost.newTabSpecでタブのタグ名"tab1"を指定する・・・。
そうすると、TabHost.TabSpecオブジェクトが返ってくるのでtab1に格納・・・。
tab1.setIndicatorでタブ部分に表示するテキスト、tab1.setContentで表示する画面部分(複数あるLinearLayoutのどれか)のid、をセットし、tabHost.addTabでtab1を追加・・・。
同様にtab2, tab3も追加・・・。

f:id:BG1:20161018144128p:plain

起動したら、こんな風にタブ1(tab1)が表示された・・・。
画面もコンテンツ1になっている・・・。
タブ2を押すと、

f:id:BG1:20161018144423p:plain

タブ2(tab2)が選択状態で、コンテンツ2に切り替わっている・・・。
さらにタブ3(tab3)を押すと、

f:id:BG1:20161018144546p:plain

タブ3(tab3)が選択され、コンテンツ3になった・・・。

Sample/android/TabHost/TabHost/src/TabHost at master · bg1bgst333/Sample · GitHub