我需要創建一個類似於iPhone中的UITabBar的控件,該控件將出現在我的應用程序的每個活動中。 UITabBar本質上是一系列按鈕,表現出TAB一樣的行爲:每個按鈕映射到一個活動。我有兩個解決方案:
1.在每個活動的佈局XML中,我插入一個<LinearLayout><Button/><Button/><Button/></LinearLayout>
元素。然後有一個通用的監聽器類來處理按鈕點擊。所以,每個活動都會有一個這個監聽器的實例。
2.要創建一個擴展LinearLayout類的自定義Widget,請將所有按鈕設置爲其靜態成員,並讓它處理按鈕點擊。在每個屏幕中包含此自定義控件。創建自定義控件或製作按鈕內嵌
我不確定採用哪種方法。請指教。替代品還讚賞
下面是什麼,我認爲這個問題:
與第一種方法的問題:
1.它會產生大量的樣板代碼(findViewByIds,setOnClickListener等)
2。假定有5個活動和3個標籤按鈕,在運行時創建將按鈕對象的總數量爲5×3 = 15
我想採取第二方法,因爲:
1.所有代碼(狀態和行爲)將由Widget類封裝。較少的Boilerplate代碼。
2.由於按鈕將是靜態成員,因此在運行時創建的Button對象的總數將只有三個。儘管如此,靜態成員會在內存中保留更長時間(直到JVM卸載該類),因爲控制出現在每個屏幕上,我認爲這可以放棄。
謝謝。
正如我所說,我有一個要求模擬TabBar;不幸的是,我無法控制這裏的任何事情。我不認爲內置TabWidget的外觀可以定製爲像iPhone的TabBar。 顯然,人們不關心應用程序是否與其他應用程序看起來不同。 我認爲你的第二點可以通過使用適當的意圖標誌(重新排序到前面,清除頂部等)在一定程度上處理;儘管我必須說它會有點複雜。 – Samuh 2009-12-22 08:12:13