當前位置:首頁 » 安卓系統 » tabhost切換android

tabhost切換android

發布時間: 2022-06-29 09:43:40

A. android里實現一個tabhost顯示怎麼弄

Tab標簽頁是界面設計時經常使用的界面控制項,可以實現多個分頁之間的快速切換,每個分頁可以顯示不同的內容,下圖是Android系統內置的Tab標簽頁,點擊「呼出/接聽鍵」後出現,用於電話呼出和查看撥號記錄、聯系人.

Tab標簽頁的使用
先要設計所有的分頁的界面布局
在分頁設計完成後,使用代碼建立Tab標簽頁,並給每個分頁添加標識和標題
最後確定每個分頁所顯示的界面布局
每個分頁建立一個XML文件,用以編輯和保存分頁的界面布局,使用的方法與設計普通用戶界面沒有什麼區別

建立一個「TabDemo」程序,包含三個XML文件,分別為tab1.xml、tab2.xml和tab3.xml,這3個文件分別使用線性布局、相對布局和絕對布局示例中的main.xml的代碼,並將布局的ID分別定義為layout01、layout02和layout03

關鍵代碼如下:
10. public void onCreate(Bundle savedInstanceState) {
11. super.onCreate(savedInstanceState);
12. TabHost tabHost = getTabHost();
13. LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView(),true);
14. LayoutInflater.from(this).inflate(R.layout.tab2, tabHost.getTabContentView(),true);
15. LayoutInflater.from(this).inflate(R.layout.tab3, tabHost.getTabContentView(),true);
16. tabHost.addTab(tabHost.newTabSpec("TAB1")
17. .setIndicator("線性布局").setContent(R.id.layout01));
18. tabHost.addTab(tabHost.newTabSpec("TAB2")
19. .setIndicator("絕對布局").setContent(R.id.layout02));
20. tabHost.addTab(tabHost.newTabSpec("TAB3")
21. .setIndicator("相對布局").setContent(R.id.layout03));
22. }
23. }

第8行代碼的聲明TabDemo類繼承與TabActivity,與以往繼承Activity不同,TabActivity支持內嵌多個Activity或View
第12行代碼通過getTabHost()函數獲得了Tab標簽頁的容器,用以承載可以點擊的Tab標簽和分頁的界面布局。
第13行代碼通過LayoutInflater將tab1.xml文件中的布局轉換為Tab標簽頁可以使用的View對象
第16行代碼使用addTab()函數添加了第1個分頁,tabHost.newTabSpec("TAB1")表明在第12行代碼中建立的tabHost上,添加一個標識為TAB1的Tab分頁
第17行代碼使用setIndicator()函數設定分頁顯示的標題,使用setContent()函數設定分頁所關聯的界面布局

在使用Tab標簽頁時,可以將不同分頁的界面布局保存在不同的XML文件中,也可以將所有分頁的布局保存在同一個XML文件中
第一種方法有利於在Eclipse開發環境中進行可視化設計,並且不同分頁的界面布局在不同的文件中更加易於管理
第二種方法則可以產生較少的XML文件,同時編碼時的代碼也會更加簡潔

B. Android FragmentTabHost 切換報錯,求高手解決。log如下:

這個是因為你在onCreatView()裡面,view已經存在,並且有parent了,需要將parent的子view刪除就可以了。http://blog.csdn.net/renpengben/article/details/12615487

C. 為什麼android tabhost便簽切換後旋轉動畫會回到原來的位置

你沒有設置animation的 stayAfter(true); 方法名我記得不大清楚了,。就是XXAfter(true);這樣就不會回去了。。

D. android 不用TabActivity 如何實現 tabhost

通過fragment+radiogroup的方式實現。

1、定義布局文件

<LinearLayout
<FrameLayout//定義tab頁內容,注意這里layout_weight設為1,占滿剩餘空間
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
<RadioGroup>//定義tab選項卡
<RadioButton/>
<RadioButton/>
</RadioGroup>
</LinearLayout>

2、定義tab切換事件,顯示tab頁

java">protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.weibo_tab);//設置布局文件
radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){//設置tab頁切換事件
@Override
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
//對應的tab頁,顯示對應的fragment布局
}
});
}

E. android中fragmenttabhost怎麼設置左右滑動

先來看看整個demo的結構:

TabAFm到TabEFm都是Fragment,並且每個Fragment對應一個布局文件。
TabAFm.java:
View Code
如上述代碼所示,TabAFm是一個Fragment,對應的布局文件是tab_a.xml,並實現了他的所有的生命周期回調函數並列印,便於調試
tab_a.xml布局中有個EditText
其他的Fragment大同小異,這里就不貼出代碼了

現在來看MainActivity:
View Code
MainActivity上述代碼所示
MainActivity是包含Fragment的Activity(也就是這里的5個Fragment)
他繼承了FragmentActivity(因為我這里用的是android-support-v4.jar)
用一個List<Fragment>去維護5個Fragment,也就是5個tab
main布局中有一個id為tab_content的FrameLayout,用來存放要顯示的Fragment。底部有一個RadioGroup,用於tab的切換,如下:
View Code
現在回到MainActivity中,下面這個FragmentTabAdapter類是關鍵,是我自己編寫的用於綁定和處理fragments和RadioGroup之間的邏輯關系
FragmentTabAdapter tabAdapter = new FragmentTabAdapter(this, fragments, R.id.tab_content, rgs);

現在看下FragmentTabAdapter:
View Code
這里解決Fragment切換重新載入布局的辦法,用的是把幾個Fragment全部Add,然後根據要顯示的哪個Fragment設置show或者hide
效果輸出:
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onAttach// 第一次進入,顯示TabA
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreate
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreateView
10-10 11:55:41.175: INFO/System.out(18368): AAAAAAAAAA____onActivityCreated
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onStart
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onResume
10-10 11:55:44.980: INFO/System.out(18368): AAAAAAAAAA____onPause// 從TabA切換到TabB(TabA調用onPause)
10-10 11:55:44.980: INFO/System.out(18368): Extra---- 1 checked!!!
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onAttach
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreate
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreateView
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onActivityCreated
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onStart
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onResume
10-10 11:55:52.062: INFO/System.out(18368): BBBBBBBBBBB____onPause// 從TabB切換到TabC(TabB調用onPause)
10-10 11:55:52.062: INFO/System.out(18368): Extra---- 2 checked!!!
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onAttach
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onCreate
10-10 11:55:52.086: INFO/System.out(18368): CCCCCCCCCC____onCreateView
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onActivityCreated
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onStart
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onResume
10-10 11:56:06.535: INFO/System.out(18368): CCCCCCCCCC____onPause// 從TabC切換到TabB(TabC調用onPause)
10-10 11:56:06.535: INFO/System.out(18368): BBBBBBBBBBB____onResume// 從TabC切換到TabB(TabB調用onResume)
10-10 11:56:06.535: INFO/System.out(18368): Extra---- 1 checked!!!

好了,到此為止,我們已經用Fragment實現了類似TabHost的功能了,下面來看下各個Fragment之間的通信
現在的情況是TabAFm中有個EditText,TabBFm中有個Button,MainActivity中有個變數「hello」
要做的是,切換到TabA,輸入「I'm TabA」,切換到B,點擊Button後,Toast顯示「hello I'm TabA」
MainActivity中沒什麼好說的,就一個hello變數:
public String hello = "hello ";

TabAFm在布局文件tab_a.xml中加個EditText,設置個id就可以了
TabBFm中:
View Code
// 獲得綁定的FragmentActivity
MainActivity activity = ((MainActivity)getActivity());

通過getActivity()即可得到Fragment所在的FragmentActivity

F. Android中想實現多個選項卡的切換,該如何實

Android中使用TabHost和TabWidget來實現選項卡功能。TabHost必須是布局的根節點,它包含兩個子節點:
TabWidget,顯示選項卡;
FrameLayout,顯示標簽內容。

實現選項卡功能有兩種方法,一種是將多個View放在同一個Activity中,然後使用使用標簽來進行切換。另一種是直接使用標簽切換不同的Activity。
後一種方法更為常用一些。
1. 創建一個工程,名字可以叫HelloTabWidget。
2. 創建多個不同的Activity,用來表示各個標簽頁中的不同內容。
3. 為標簽設計不同的icon。每個標簽應該有兩個icon,一個表示選中,一個未選中。將圖片放在 res/drawable/文件夾下。然後創建一個相應的
StateListDrawable,用來實現在選中和未選中直接自動的切換。

G. android中的tabHost怎樣在點擊一個選項卡後跳轉到一個activity,點擊另一個選項卡跳轉到另一個activity

一個Tab頁,中間有個按鈕可以跳轉到另一個Activity

我的TabHost是
intent = new Intent(this,Activity01.class);//新建一個Intent用作Tab1顯示的內容
spec = tabHost.newTabSpec("tab1")//新建一個 Tab
.setIndicator("tab1")//設置名稱以及圖標
.setContent(intent);//設置顯示的intent,這里的參數也可以是R.id.xxx
tabHost.addTab(spec);//添加進tabHost
這個方式添加進來的,載入Acitivity01

H. android開發中的tabhost標簽,怎麼實現點擊改變圖片。就像微信、微博最下面那一行那樣的效果。

使用RadioGroup,裡面放置一組RadioButton。然後設置RadioButton的屬性。

比如

提一點建議Tabhost已經過時了,現在一般都用fragment和viewpager

I. android tabhost 切換activity時有上一個頁面的頁面殘留

應該不會吧,TabHost自己切換Activity都不用程序員控制Intent,把Activity在Mainfest下注冊了就行。可以上圖或相關代碼看看嗎?

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:642
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:369
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:89
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:312
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:795
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:348
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:819
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:369
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:596