2013-02-20 70 views
25

我創建的是Action Bar導航選項卡,但是當操作欄堆疊時,選項卡不會獲得整個寬度空間。我有一張照片來說明它。堆疊的ActionBar選項卡欄不填充父項

enter image description here

是可能的,在這種情況下,給予每個選項卡50%屏幕寬度的?

謝謝

我在編輯說它不是一個Sherlock Action Bar。我在Samsung Galaxy Note 10.1和Nexus 7中工作。現在,在Nexus中測試它,我注意到它的行爲不同。另一張截圖:

enter image description here

+1

Kaixo Jon,我遇到了同樣的問題。你有沒有得出結論? – mdelolmo 2013-03-11 10:27:06

+0

Ez,抱歉mdelolmo,但我處於相同的情況。這是荒謬的。 – 2013-03-15 11:14:33

+1

你有沒有解決這個問題? – 2014-11-20 11:55:44

回答

18

我不認爲這是目前可行的。過去幾天我一直在嘗試做同樣的事情,這是迄今爲止我發現的。

Android框架使用一個名爲ActionBarPolicy的類來設置一些關於ActionBar行爲的規則。 在這個文件中(可以在這裏找到:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/view/ActionBarPolicy.java),你會發現一個名爲getStackedTabMaxWidth()的方法,它返回一個dimen值(當前在160dip的資源中設置)。

此值用於放置在ScrollingTabContainerView(https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/ScrollingTabContainerView.java)中的內部類TabView。 TabView是ActionBar的TabBar的私有實現。

現在我不認爲這個價值,也不能修改這個行爲,除了可能使用反射。我對此不太瞭解,所以如果有人能夠管理這樣的事情,請不要猶豫,因爲這確實是一種不好的行爲,在某些平板電腦上看起來不太好。

+0

從https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9 「堆積動作條翼片現在有一個寬度限制。這防止 超寬標籤,可以跨越整個屏幕。翼片 的簇,如果它不跨越整個寬度的中心。 」 – 2015-09-02 17:11:28

+0

它看起來像Android正在從標籤切換到Android M中的操作欄。不幸的是,問題仍然存在於舊版本中。 – 2015-09-02 17:17:04

0

Android堆疊的動作條標籤沒有可調節的寬度。

「堆積動作條翼片現在有一個寬度限制。這防止了可以跨越整個屏幕超寬標籤。如果它不跨越整個寬度接片的簇的中心。」 https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9

解決方案是使用隨Android 5.0發佈的Android設計支持庫中的API,其中包括TabLayout。 Android支持庫需要appcompat庫,但如果使用gradle進行構建,則會爲您解決該依賴關係。

對於大多數開發人員來說,這不會是一個問題,但TabLayout設置requries至少SDK API級別22,因爲程序兼容性依賴關係對22編譯然而,TabLayout不會對22的運行時間依賴性,這意味着您可以在API級別7以上的設備上運行它。

tl; r - 使用Android設計庫中的Tablayout。開發人員需要API等級22,但可以在v7以前的舊手機上運行。