如何添加與操作欄內嵌的選項卡(與設置按鈕位於同一行的選項卡)?Android工具欄選項卡導航
Google's DeskClock Implementation
我相信他們這個使用甚至在棉花糖發佈分支不贊成的方法實現:
mActionBar.setDisplayOptions(0);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
他們風格:
<style name="DeskClock" parent="@style/BaseActivityTheme">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">@color/default_background</item>
<!-- Attributes from support.v7.appcompat -->
<item name="actionBarStyle">@style/DeskClockActionBarStyle</item>
<item name="actionBarTabStyle">@style/DeskClockTabStyle</item>
<item name="actionBarTabBarStyle">@style/DeskClockTabBarStyle</item>
</style>
<style name="DeskClockTabBaseStyle" parent="Widget.AppCompat.ActionBar.TabView">
<item name="android:paddingLeft">@dimen/actionbar_tab_padding</item>
<item name="android:paddingRight">@dimen/actionbar_tab_padding</item>
<item name="android:gravity">center</item>
</style>
<style name="DeskClockTabStyle" parent="DeskClockTabBaseStyle">
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
</style>
<style name="DeskClockTabBarStyle" parent="Widget.AppCompat.ActionBar.TabBar">
<item name="android:dividerPadding">12dp</item>
<item name="android:gravity">center</item>
<!-- Attributes from support.v7.appcompat -->
<item name="showDividers">none</item>
</style>
<style name="DeskClockActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@null</item>
<item name="android:backgroundStacked">@null</item>
<item name="android:backgroundSplit">@null</item>
<!--suppress CheckTagEmptyBody Empty displayOptions to hide app title at launch. -->
<item name="displayOptions"></item>
</style>
編輯:
我仍然沒有達到同樣的效果。
風格:
<style name="Theme" parent="@style/AppTheme">
<item name="android:windowActionBarOverlay">true</item>
<!-- Attributes from support.v7.appcompat -->
<item name="actionBarStyle">@style/DeskClockActionBarStyle</item>
<item name="actionBarTabStyle">@style/DeskClockTabStyle</item>
<item name="actionBarTabBarStyle">@style/DeskClockTabBarStyle</item>
</style>
<style name="DeskClockTabBaseStyle" parent="Widget.AppCompat.ActionBar.TabView">
<item name="android:paddingLeft">@dimen/actionbar_tab_padding</item>
<item name="android:paddingRight">@dimen/actionbar_tab_padding</item>
<item name="android:gravity">center</item>
</style>
<style name="DeskClockTabStyle" parent="DeskClockTabBaseStyle">
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
</style>
<style name="DeskClockTabBarStyle" parent="Widget.AppCompat.ActionBar.TabBar">
<item name="android:dividerPadding">12dp</item>
<item name="android:gravity">center</item>
<!-- Attributes from support.v7.appcompat -->
<item name="showDividers">none</item>
</style>
<style name="DeskClockActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@null</item>
<item name="android:backgroundStacked">@null</item>
<item name="android:backgroundSplit">@null</item>
<!--suppress CheckTagEmptyBody Empty displayOptions to hide app title at launch. -->
<item name="displayOptions"></item>
</style>
MainActivity:
ActionBar mActionBar = getSupportActionBar();
mActionBar.setDisplayOptions(0);
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Add 3 tabs, specifying the tab's text and TabListener
for (int i = 0; i < NUM_PAGES; i++) {
mActionBar.addTab(
mActionBar.newTab()
.setText("Tab " + (i + 1))
.setTabListener(tabListener));
}
我怎麼會在XML中添加的設置按鈕?沒有刪除默認的操作欄沒有辦法做到這一點? 我還包括谷歌的造型。這有幫助嗎?如果需要,我甚至可以使用已棄用的方法。 –
我沒有真正使用默認的actionBar,我覺得很難在當前的API中進行自定義。目前,自定義actionBar幾乎總是最好的解決方案。您可以將按鈕添加到XML中,並將onClickListener設置爲該按鈕,然後在按鈕正下方充填一個對話框。 –