2013-11-02 101 views
3

在縱向模式下使用手機或平板電腦時,在ActionBar下顯示標籤,用於標識徽標和菜單項。在水平模式下的平板電腦上,它們與徽標和菜單項一起顯示。在此配置中,選定選項卡下的下劃線將丟失。水平視圖中的ActionBar選項卡樣式

什麼風格控制這個?在縱向模式下,當標籤顯示內嵌徽標和菜單時,我想使用與橫向模式不同的選定樣式。

我的主題是它的父母設置爲Theme.AppCompat.Light。在這我有

<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Silence</item> 
<item name="android:actionBarStyle">@style/ActionBar.Solid.Silence</item> 

android:actionBarTabStyleandroid:background值設置爲可繪製是

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" /> 
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_silence" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_silence" /> 
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_silence" /> 

    <!-- Pressed --> 
    <!-- Non focused states --> 
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_silence" /> 
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_silence" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_silence" /> 
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_silence" /> 
</selector> 

我看到這些state_selected值。被設置爲這些圖形的圖像與ActionBar背景顏色不同,所以它不僅僅是在同一個彩色背景上看不到它們。

風格actionBarStyle包含

<item name="android:background">@drawable/ab_solid_silence</item> 
<item name="android:backgroundStacked">@drawable/ab_stacked_solid_silence</item> 
<item name="android:backgroundSplit">@drawable/ab_bottom_solid_silence</item> 
<item name="android:progressBarStyle">@style/ProgressBar.Silence</item> 

的三個第一的有圖像和progressBarStyle包含一些風格了,但他們是不相關的。

+0

您是否檢查了各種API級別(或您看到該行爲的版本?)? – Luksprog

+0

@Luksprog我只有運行Android 4.1.2和4.3的設備。我如何才能爲內聯選項卡使用完全不同的圖像? – MikkoP

+1

'actionBarTabStyle'負責該選擇器。當選項卡爲內聯時,我從未看到有消失標籤指示符的問題。 *我如何爲內聯選項卡使用完全不同的圖像?* - 系統選擇如何放置這些選項卡,橫向方向可能會將它們視爲內聯。因此,您可以使用'-land'的配置標識符並將主題更改爲所需的選擇器。我會建議反對這一點,我不知道我見過一個這樣做的應用程序,這對用戶來說是非常直觀的。 – Luksprog

回答

-1

您應該對ActionBarTabStyle感興趣。

要爲內聯選項卡使用不同的圖像,您可以假定它代表橫向模式併爲橫向模式創建自定義選擇器。

如果你想一套完整的方案來嘗試,看看這個 http://jgilfelt.github.io/android-actionbarstylegenerator 下載zip,用自己的PNG文件替換生成的圖像,並在你的項目中添加的樣式。