2015-05-29 25 views
1

在styles.xml我造型溢出菜單的彈出式主題工具欄中:程序兼容性工具欄popupTheme不使用時多選擇主動

<style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:backgroundTint">@color/white</item> 
</style> 

按預期工作,但如果我在一個多選擇回收站視圖(列表)彈出式主題背景色從白色變爲黃色(工具欄的顏色)。我不知道這是爲什麼,因爲如果多選不活躍,它具有正確的顏色。

任何想法我做錯了什麼?

造型工具欄:

<style name="PostToolbarStyle" parent="android:Theme.Material"> 
    <item name="android:backgroundTint">@color/yellow</item> 
    <item name="android:textColorHint">@color/lightGray2</item> 
    <item name="android:textColorPrimary">@color/defaultTextColor</item> 
    <item name="android:textColorSecondary">@color/defaultTextColor</item> 
</style> 

這就是我如何設置工具欄上的佈局xml文件:

<android.support.v7.widget.Toolbar 
    android:id="@+id/app_toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:elevation="4dp" 
    android:minHeight="?attr/actionBarSize" 
    android:paddingTop="@dimen/tool_bar_top_padding" 
    app:popupTheme="@style/ToolbarOverflowMenuStyle" 
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/> 

彈出的主題看起來像(正常)時,多選不活躍: Displayed correctly

而在這裏如何顯示(錯誤地)當多選是活躍的: enter image description here

+0

可能是題外話題:**請勿**在* themes *中使用'background'或'backgroundTint',因爲它們將應用於小部件的每個孩子(每個項目而不是整個背景)。定義'popupBackground'或'colorBackground'。 –

+0

感謝您的提示。我已將這些更改應用到應用程序。 –

回答

0

Menu - ActionMode您看到您的默認OptionsMenu彈出式背景是白色的,並且您的應用的默認上下文菜單是黃色。當你進入多重選擇時,觸發一個ActionMode來處理itemClick和你有什麼,並且你知道CAB是如何工作的。

,如果你想保持相同的白色背景在setMultiChoiceModeListener覆蓋onPrepareActionMode(ActionMode mode, Menu menu)和使用getCustomView().setBackgroundColor(Color.White);

編輯尋址評論

這就是我的意思是在你的onPrePareActionMode()

@Override 
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
    //the mode parameter is your CAB, so call that on it 
    mode.getCustomView().setBackgroundColor(Color.White); 
} 

希望對您有所幫助

+0

謝謝你的提示。我試圖應用它,但沒有運氣讓它工作。我有 '代碼' 私有類ItemMultiSelectorCallback實現ActionMode。回調{@Override public boolean onPrepareActionMode(ActionMode actionMode,Menu menu){ 'code' –

+0

由於我只能編輯5分鐘的評論,因此不得不添加其他評論: 感謝您的提示。我試圖應用它,但沒有運氣讓它工作。我有這樣的代碼: 'code' 私有類ItemMultiSelectorCallback實現ActionMode.Callback @覆蓋 公共布爾onPrepareActionMode(ActionMode actionMode,菜單菜單){ 菜單項moveMenuItem = menu.findItem(R.id.action_move_multi_documents); moveMenuItem.setVisible(!isFolderInSelection &&!isDraftFolder); moveMenuItem.setVisible(!isFolderInSelection &&!isDraftFolder); 返回true; } 'code' 無法在那裏使用getCustomView()方法。有任何想法嗎? –

+0

檢查編輯sir @ e-nature – Elltz

0

你可以嘗試編輯您的風格與這個屬性,selectableItemBackground

<style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar"> 
<item name="android:backgroundTint">@color/white</item> 
<item name="selectableItemBackground">?android:selectableItemBackground</item></style> 

曾與SwitchCompat類似的問題和解決方案在性能本身之一。此博客也有很大幫助。 http://blog.mohitkanwal.com/blog/2015/03/07/styling-material-toolbar-in-android/

+0

感謝您的提示。不幸的是,這對popupTheme工具欄顏色沒有任何影響。看起來像彈出工具欄(多選活動)使用像常規工具欄樣式相同的樣式設置。 –