日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 界面效果22】Android的Tab与TabHost

發(fā)布時間:2025/3/20 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 界面效果22】Android的Tab与TabHost 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Tab與TabHost



這就是Tab,而盛放Tab的容器就是TabHost
如何實現(xiàn)??
每一個Tab還對應了一個布局,這個就有點好玩了。一個Activity,對應了多個功能布局。
①新建一個Tab項目,注意,不要生成main Activity


這里不要選
②在包里面新建一個類MyTab,繼承于TabActivity
其實,TabActivity是Activity的子類
  • package zyf.tab.test;

  • import android.app.TabActivity;

  • public class MyTab extends TabActivity {

  • }
  • 復制代碼 ③從父類繼承OnCreate()入口方法
  • package zyf.tab.test;
  • import android.app.TabActivity;
  • import android.os.Bundle;
  • public class MyTab extends TabActivity {
  • ? ? @Override
  • ? ? protected void onCreate(Bundle savedInstanceState) {
  • ? ?? ???// TODO Auto-generated method stub
  • ? ?? ???super.onCreate(savedInstanceState);
  • ? ? }
  • }
  • 復制代碼 ④在Manifest.xml文件中注冊一下MyTab類(Activity)
  • <activity android:name=".MyTab">
  • ? ? <intent-filter>
  • ? ?? ???<action android:name="android.intent.action.MAIN"></action>
  • ? ?? ???<category android:name="android.intent.category.LAUNCHER"></category>
  • ? ? </intent-filter>
  • </activity>
  • 復制代碼 ⑤這時候,需要設計一下標簽頁對應的布局,一般采用FrameLayout作為根布局,每個標簽頁面對應一個子節(jié)點的Layout
  • <?xml version="1.0" encoding="utf-8"?>
  • <!--??這里是根節(jié)點布局??-- >
  • <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • ? ? android:layout_width="fill_parent" android:layout_height="fill_parent">

  • <!--??第一個Tab 對應的布局??-- >
  • ? ? <LinearLayout android:id="@+id/widget_layout_Blue"
  • ? ?? ???android:layout_width="fill_parent" android:layout_height="fill_parent"
  • ? ?? ???androidrientation="vertical" >
  • ? ?? ???<EditText android:id="@+id/widget34" android:layout_width="fill_parent"
  • ? ?? ?? ?? ?android:layout_height="wrap_content" android:text="EditText"
  • ? ?? ?? ?? ?android:textSize="18sp">
  • ? ?? ???</EditText>
  • ? ?? ???<Button android:id="@+id/widget30" android:layout_width="wrap_content"
  • ? ?? ?? ?? ?android:layout_height="wrap_content" android:text="Button">
  • ? ?? ???</Button>
  • ? ? </LinearLayout>
  • <!--??第二個Tab 對應的布局??-- >
  • ? ? <LinearLayout android:id="@+id/widget_layout_red"
  • ? ?? ???android:layout_width="fill_parent" android:layout_height="fill_parent"
  • ? ?? ???androidrientation="vertical"??>
  • ? ?? ???<AnalogClock android:id="@+id/widget36"
  • ? ?? ?? ?? ?android:layout_width="wrap_content" android:layout_height="wrap_content">
  • ? ?? ???</AnalogClock>
  • ? ? </LinearLayout>
  • <!--??第三個Tab 對應的布局??-- >
  • ? ? <LinearLayout android:id="@+id/widget_layout_green"
  • ? ?? ???android:layout_width="fill_parent" android:layout_height="fill_parent"
  • ? ?? ???androidrientation="vertical">
  • ? ?? ???<RadioGroup android:id="@+id/widget43"
  • ? ?? ?? ?? ?android:layout_width="166px" android:layout_height="98px"
  • ? ?? ?? ?? ?androidrientation="vertical">
  • ? ?? ?? ?? ?<RadioButton android:id="@+id/widget44"
  • ? ?? ?? ?? ?? ? android:layout_width="wrap_content" android:layout_height="wrap_content"
  • ? ?? ?? ?? ?? ? android:text="RadioButton">
  • ? ?? ?? ?? ?</RadioButton>
  • ? ?? ?? ?? ?<RadioButton android:id="@+id/widget45"
  • ? ?? ?? ?? ?? ? android:layout_width="wrap_content" android:layout_height="wrap_content"
  • ? ?? ?? ?? ?? ? android:text="RadioButton">
  • ? ?? ?? ?? ?</RadioButton>
  • ? ?? ???</RadioGroup>
  • ? ? </LinearLayout>
  • </FrameLayout>
  • 復制代碼 ⑥首先,應該聲明TabHost,然后用LayoutInflater過濾出布局來,給TabHost加上含有Tab頁面的FrameLayout
  • private TabHost myTabhost;
  • myTabhost=this.getTabHost();//從TabActivity上面獲取放置Tab的TabHost
  • LayoutInflater.from(this).inflate(R.layout.main, myTabhost.getTabContentView(), true);
  • //from(this)從這個TabActivity獲取LayoutInflater
  • //R.layout.main 存放Tab布局
  • //通過TabHost獲得存放Tab標簽頁內(nèi)容的FrameLayout
  • //是否將inflate 拴系到根布局元素上
  • myTabhost.setBackgroundColor(Color.argb(150, 22, 70, 150));
  • //設置一下TabHost的顏色
  • 復制代碼 ⑦接著,在TabHost創(chuàng)建一個標簽,然后設置一下標題/圖標/標簽頁布局
  • myTabhost
  • ? ?? ?? ?? ?? ? .addTab(myTabhost.newTabSpec("TT")// 制造一個新的標簽TT
  • ? ?? ?? ?? ?? ?? ?? ?? ?.setIndicator("KK",
  • ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???getResources().getDrawable(R.drawable.ajjc))
  • ? ?? ?? ?? ?? ?? ?? ?? ?// 設置一下顯示的標題為KK,設置一下標簽圖標為ajjc
  • ? ?? ?? ?? ?? ?? ?? ?? ?.setContent(R.id.widget_layout_red));
  • ? ?? ???//設置一下該標簽頁的布局內(nèi)容為R.id.widget_layout_red,這是FrameLayout中的一個子Layout
  • 復制代碼 ⑧標簽切換事件處理,setOnTabChangedListener
  • myTabhost.setOnTabChangedListener(new OnTabChangeListener(){
  • ? ?? ?? ?? ?@Override
  • ? ?? ?? ?? ?public void onTabChanged(String tabId) {
  • ? ?? ?? ?? ?? ? // TODO Auto-generated method stub
  • ? ?? ?? ?? ?}? ?? ?? ?? ?
  • ? ?? ???});
  • 復制代碼 ⑨各個標簽頁的動態(tài)MENU
    先把在XML中設計好的MENU放到一個int數(shù)組里
  • private static final int myMenuResources[] = { R.menu.phonebook_menu,
  • ? ?? ?? ?? ?R.menu.addphone_menu, R.menu.chatting_menu, R.menu.userapp_menu };
  • 復制代碼 在setOnTabChangedListener()方法中根據(jù)標簽的切換情況來設置myMenuSettingTag
  • @Override
  • ? ? public void onTabChanged(String tagString) {
  • ? ?? ???// TODO Auto-generated method stub
  • ? ?? ???if (tagString.equals("One")) {
  • ? ?? ?? ?? ?myMenuSettingTag = 1;
  • ? ?? ???}
  • ? ?? ???if (tagString.equals("Two")) {
  • ? ?? ?? ?? ?myMenuSettingTag = 2;
  • ? ?? ???}
  • ? ?? ???if (tagString.equals("Three")) {
  • ? ?? ?? ?? ?myMenuSettingTag = 3;
  • ? ?? ???}
  • ? ?? ???if (tagString.equals("Four")) {
  • ? ?? ?? ?? ?myMenuSettingTag = 4;
  • ? ?? ???}
  • ? ?? ???if (myMenu != null) {
  • ? ?? ?? ?? ?onCreateOptionsMenu(myMenu);
  • ? ?? ???}
  • ? ? }
  • 復制代碼
    然后onCreateOptionsMenu(Menu menu) 方法中通過MenuInflater過濾器動態(tài)加入MENU
  • ? ?@Override
  • ? ? public boolean onCreateOptionsMenu(Menu menu) {
  • ? ?? ???// TODO Auto-generated method stub
  • ? ?? ???// Hold on to this
  • ? ?? ???myMenu = menu;
  • ? ?? ???myMenu.clear();//清空MENU菜單
  • ? ?? ???// Inflate the currently selected menu XML resource.
  • ? ?? ???MenuInflater inflater = getMenuInflater();? ?? ???
  • //從TabActivity這里獲取一個MENU過濾器
  • ? ?? ???switch (myMenuSettingTag) {
  • ? ?? ???case 1:
  • ? ?? ?? ?? ?inflater.inflate(myMenuResources[0], menu);
  • ? ?? ?? ?? ?//動態(tài)加入數(shù)組中對應的XML MENU菜單
  • ? ?? ?? ?? ?break;
  • ? ?? ???case 2:
  • ? ?? ?? ?? ?inflater.inflate(myMenuResources[1], menu);
  • ? ?? ?? ?? ?break;
  • ? ?? ???case 3:
  • ? ?? ?? ?? ?inflater.inflate(myMenuResources[2], menu);
  • ? ?? ?? ?? ?break;
  • ? ?? ???case 4:
  • ? ?? ?? ?? ?inflater.inflate(myMenuResources[3], menu);
  • ? ?? ?? ?? ?break;
  • ? ?? ???default:
  • ? ?? ?? ?? ?break;
  • ? ?? ???}
  • ? ?? ???return super.onCreateOptionsMenu(menu);
  • ? ? }
  • 復制代碼
    ⑩運行效果








    轉載于:https://www.cnblogs.com/dongdong230/p/4183076.html

    總結

    以上是生活随笔為你收集整理的【Android 界面效果22】Android的Tab与TabHost的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。