ho capito con l'aiuto di riflessione. Perché io non sono un ActionBar
public static void setActionModeBackgroundColor(ActionMode actionMode, int color) {
try {
StandaloneActionMode standaloneActionMode = (StandaloneActionMode) actionMode;
Field mContextView = StandaloneActionMode.class.getDeclaredField("mContextView");
mContextView.setAccessible(true);
Object value = mContextView.get(standaloneActionMode);
((View) value).setBackground(new ColorDrawable(color));
} catch (Throwable ignore) {
}
}
Inoltre ci sono 2 implementazioni di ActionMode: StandaloneActionMode e ActionModeImpl. questo esempio solo per il primo. Per il secondo sarà lo stesso
fonte
2017-04-19 08:04:22
L'uso del riflesso probabilmente funzionerà, ma significa sporcarsi le mani con cose che non dovresti toccare. Inoltre, non ci sono garanzie sulla compatibilità diretta e/o all'indietro per tale soluzione. Comunque, solo un pensiero. –
È possibile trovare la risposta in questa domanda: http://stackoverflow.com/questions/6556116/how-can-i-customize-the-action-modes-color-and-text –
Avrai usare la riflessione. [Come animare lo sfondo di ActionMode di ActionBar?] (Http://stackoverflow.com/questions/23457709/how-to-animate-background-of-actionmode-of-the-actionbar) – adneal