2013-06-13 12 views
15

Sono a conoscenza di android:actionModeBackground che può essere utilizzato nei temi XML.Impostazione sfondo Modalità azione a livello di programmazione

C'è un modo per impostare questo sfondo nel codice?

Fondamentalmente ho bisogno del equavalent ActionMode di

getActionBar().setBackgroundDrawable(drawable); 
+0

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. –

+0

È possibile trovare la risposta in questa domanda: http://stackoverflow.com/questions/6556116/how-can-i-customize-the-action-modes-color-and-text –

+0

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

risposta

0

È possibile ottenere l'ActionMode id utilizzando questo action_context_bar

int amId = getResources().getIdentifier("action_context_bar", "id", "android"); 
    View view= findViewById(amId); 
    view.setBackground(actionModeBackground); 
+1

questo mi dà un punto nullopercepito –

+0

me 2 - Ho ottenuto nullpointerexception – Colateral

0

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

Problemi correlati