2010-05-28 30 views
7

我試圖在應用程序的頁腳中實現菜單,類似於Engadget應用程序。據我所知,以這種方式獲得標準的TabLayout並不是微不足道的(如果可能的話)?在Android中重複使用頁腳菜單的最佳方式

正如我看到不少應用程序使用此接口範例,我會假設有一個聰明的方法來做到這一點。目前,我正在通過在每個佈局的末尾添加一個包含行來定義佈局。就渲染而言,這工作正常,但我必須將onClickListeners添加到每個活動。我們可以通過XML定義clickListener嗎?

總結我的問題:在幾項活動中實現共享頁腳導航的最佳方式是什麼?

回答

7

你可以使所有的活動都來自一個擴展Activity的公共基類,並在那裏建立一個方法來構建菜單。使用RelativeLayout作爲主容器,在底部粘貼一個水平的LinearLayout(layout_alignParentBottom =「true」),然後將主要的「內容」容器(特定活動的任何類型的佈局)對齊。在菜單的任何位置使用android:weight(例如ImageButton),然後在菜單的容器上使用android:weightSum,它們將均勻分佈。所以,如果你有四個ImageButtons和android:weight =「1」,並且包含它們的LinearLayout有android:weightSum =「4」,你應該很好。

所以,TabContentActivity可以擴展Activity,然後所有的特定活動都會擴展TabContentActivity。 TabContentActivity有一個調用super.onCreate的onCreate,然後調用一些私有方法來構建菜單。然後,當你的派生類在他們自己的onCreate中調用super.onCreate時,你的「選項卡」就建立了。您可以在TabContentActivity中擁有一個Enum,它代表每個選項卡,並使用該Enum類型的局部變量來指定突出顯示哪個選項卡。

不要聽別人告訴你不要這樣做。如果這是您想要的用戶界面,請不要受到您工作環境的限制。正如您有迴應告訴您,這不是「在Android中執行此操作的正確方法」,您當前也有兩個投票。

0

這裏是一個長鏡頭,我從來沒有嘗試過,看看它的工作原理:

  • 創建一個包含onClick方法在您的頁腳元素的特殊階層。 import這個班級每Activity你有;
  • 在包含的XML文件中使用android:onClick,其值指向該類中的方法。現在

,我不知道這個類是否需要在每一個Activity被實例化或者您可以使用它的方法是靜態的,但這樣的事情應該工作,它仍然比增加聽衆的每一個更好活動。


在我看來(我強調,這只是我的意見),因爲你把它這個界面範例是一個貧窮的嘗試複製了iPhone。這種範例在iPhone上非常流行,主要是因爲它只有一個按鈕。我甚至討厭這樣做的Engadget應用程序(再次,它是從iPhone應用程序複製) - 它浪費屏幕的房地產。

總之,我的建議是:use the MENU button


最後要注意:永遠不要用TabLayout發揮各地,但如果你想在每個選項卡單獨Activity那麼我99.9%肯定你不能做到這一點(你不能在任何嵌入整個活動種類ViewViewGroup)。 TabLayout只有小孩Layout s,不是活動。此外,與TabLayout,你可以說再見返回按鈕(你要浪費但另一個按鈕從iPhone複製一個用戶界面?) - 除非你打算覆蓋它,在這種情況下,你可以告訴你的用戶再見。

+0

錯誤。 TabLayout可以在每個標籤中有單獨的活動,並且我在市場上有一個應用程序。 – Rich 2010-05-28 14:30:33

+0

因此,您可以同時在屏幕上進行多個活動活動?是否有某種可以容納活動兒童的ViewGroup?如果你是對的,那麼這應該是要走的路,儘管我仍然認爲使用菜單更好,對於屏幕空間,如果不是其他任何東西。 – Felix 2010-05-28 16:42:55

0

不知道這個想法是可行的,

坐落在頁腳TabLayout1,但設定,讓只有標籤是可見的,而不是內容(這將大大頁腳下方,在無形的空間) 。
然後在屏幕的其餘部分進行第二次查看,然後您可以在該處切換視圖。如果您將第二個佈局(頂部)設置爲TabLayout2並將選項卡綁定到活動,您可以在活動中共享此視圖。另外請注意,您必須在頂部設置TabLayout2,以便只有內容區域可見時才能看到選項卡。我認爲用一些填充可以解決。

+0

聽起來像一個徹頭徹尾的黑客。我同意它*可能*工作,但這並不會改變其黑客狀態。另外,點擊選項卡時啓動新的活動似乎......非用戶友好的。我會討厭這樣的應用程序。最重要的是,將「TabLayout」定位恰到好處將是一場噩夢,特別是考慮到Android支持的各種屏幕和密度。 – Felix 2010-05-28 14:13:13

+0

單擊選項卡時啓動新活動已經內置,您可以非常簡單地使用它。 – Pentium10 2010-05-28 15:13:27

相關問題