2014-10-30 59 views
3

我正在將應用程序從AppCompat-v20遷移到AppCompat-v21。作爲該過程的一部分,我試圖擺脫操作欄,並用Toolbar替換它,以便我們可以利用所有新材質設計的優點。使用預先存在的操作欄樣式來設置工具欄的樣式

以前,我們已經在樣式中定義了AB的displayOptions的所有信息,然後我們在Activity的主題中將該樣式設置爲actionBarStyle。然而,現在我擴展Theme.AppCompat.NoActionBar這些屬性不再受到尊重,這是有道理的,因爲我的主題延伸Theme.AppCompat.NoActionBar。同時,我仍然希望將這些displayOptions應用到他們以前的相同位置(即,我希望能夠指定是否要使用徽標或將家作爲主題的一部分)。

我知道我可以通過將displayOptions放到主題上並自己解析它們來做到這一點,但是我想知道是否在AppCompat內有支持Toolbar的設備來自動處理這個邏輯。

回答

4

隨着Toolbar你必須記住的是,它基本上只是一個視圖組,所以你可以比使用ActionBar更容易和更自定義它。話雖如此,你可以使用樣式來改變Toolbar的外觀,但有一些方法可以設置標題/標誌/導航等。

這裏有造型的例子您Toolbar

<android.support.v7.widget.Toolbar 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 

如果您正在使用ActionBarActivitiesFragments那麼你可以撥打下列允許Android知道使用您的Toolbar作爲supportActionBar。這意味着您撥打getSupportActionBar()的所有電話仍然有效。

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); 
setSupportActionBar(toolbar); 

新材料設計的指導方針已經開始使用標誌移開,但如果你堅持設置一個你可以像這樣:

toolbar.setLogo(); 

你的問題是微渺所以更多信息結帳this post由克里斯巴恩斯和尼克布徹,然後the documentation

+0

我很好設置一個'工具欄'作爲我的supportActionBar。我想要的是能夠使用我的themes.xml和styles.xml來指定是否要顯示徽標/向上按鈕。通過Action Bar,我可以通過在我的風格中指定'displayOptions'來實現這一點。看起來工具欄不會公開'setDisplayOptions',所以我也猜測把它們分配給工具欄本身是不值得的。 – Jonathan 2014-10-30 20:42:41

+1

這是正確的。工具欄沒有'setDisplayOptions',所以如果你想實現這些功能,你可以自己解析這些功能,然後通過我概述的一些方法設置工具欄 – MrEngineer13 2014-10-30 20:48:54