2015-02-06 75 views
13

我不確定這是一個錯誤還是以某種方式,我沒有正確使用新的工具欄類。使用工具欄時無法設置動作模式

我能夠使用其中一個可用的主題直接成功地爲ActionBar主題。這也讓我可以主題ActionMode。一切都如預期完美。這是我如何做到的。

<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
     <item name="actionModeBackground">@drawable/action_mode_background</item> 
</style> 

現在我正在尋找更多的靈活性,所以我試圖從支持庫中使用新的工具欄。完美的工具欄實施和工作正常,但是,現在行動模式不再按預期工作。自定義背景不起作用,動作模式欄向下推動工具欄。

要解決推下來的問題,我使用了國旗windowActionModeOverlay。對我來說,事實動作模式不會成爲工具欄的一部分,吸...:/

<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowActionModeOverlay">true</item> 
     <item name="actionModeBackground">@drawable/action_mode_background</item> 
</style> 

在我的活動我下面讓我的工具欄默認動作條。

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

現在我已經嘗試了很多東西。我甚至試圖潛入源頭以找出發生的事情。

任何想法爲什麼會發生這種情況?我如何設計ActionMode?或者更具體地說,我如何更改ActionMode的背景?


更新1
我注意到,增加<item name="windowActionBar">false</item>到我的活動主題時的動作模式失去其主題與擁有它是真實的。顯然將它設置爲true將包括窗口操作欄。


更新2
我能得到使用一對夫婦MODS的主題正確的操作模式。

  1. 動作模式背景。原來你只是直接在ActionMode主題上設置背景爲android:background!此外,您需要在主題上指定它的文本。

    <item name="actionModeStyle">@style/Widget.ActionMode</item>
    <style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> <item name="android:background">@drawable/action_mode_background</item> <item name="titleTextStyle">@style/TitleTextStyle</item> </style>

  2. 後退箭頭沒有得到樣式。我重寫了所使用的drawable,並且僅添加了我自己的白色。
    <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item>

+0

可以肯定的是,我會嘗試在'actionModeBackground'屬性中添加'android:'前綴。 – natario 2015-02-08 23:05:06

+0

嘿,我用「修復」更新了我的問題。設置動作模式背景結果稍有不同。 – Jona 2015-02-09 00:27:03

+0

現在的問題是什麼? – natario 2015-02-09 08:30:35

回答

16

好了,我終於可以通過一些樣式,主題,ATTRS,並從支持庫代碼後挖妥善風格的動作模式。

在我提供解決方案給我的問題之前,我不得不提一下,支持庫似乎存在一個錯誤。當您隱藏窗口操作欄時,它似乎會鬆動操作模式的設置主題。我已經報告了bug以查看他們是否修復此問題或提供更多詳細信息。

所以解決方案是基本上風格的背景,文字,並關閉我的自我圖標。這樣做需要使用我自己的ActionMode風格並將屬性指針更改爲關閉圖標。

的themes.xml

<style name="Theme.Main.Home"> 
    <item name="windowActionModeOverlay">true</item> 
    <item name="actionModeStyle">@style/Widget.ActionMode</item> 
    <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item> 
</style> 

styles.xml

<style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> 
    <item name="android:background">@drawable/action_mode_background</item> 
    <item name="titleTextStyle">@style/TitleTextStyle</item> 
</style> 
  • 背景
    這是棘手,因爲actionModeBackground沒有設置的後臺工作動作模式。您必須通過ActionMode樣式上的標準android:background更改背景。
  • 標題文本
    簡單地爲titleTextStyle提供一般風格允許改變文本顏色。
  • 關閉圖標
    下載了材料圖標,並使用actionModeCloseDrawable attr添加了我的自我關閉圖標。
相關問題