2013-06-13 2 views
15

Jestem świadomy android:actionModeBackground, które mogą być używane w motywach XML.Programowalne ustawianie tła działania

Czy istnieje sposób ustawienia tła w kodzie?

Zasadniczo muszę equavalent ActionMode z

getActionBar().setBackgroundDrawable(drawable); 
+0

Korzystanie z odbicia prawdopodobnie zadziałałoby, ale oznacza to zabrudzenie rąk za pomocą rzeczy, których tak naprawdę nie powinno się dotykać. Ponadto nie ma żadnych gwarancji zgodności z takim rozwiązaniem przed i/lub wstecz. W każdym razie, tylko myśl. –

+0

można znaleźć odpowiedź na to pytanie: http://stackoverflow.com/questions/6556116/how-can-i-customize-the-action-modes-color-and-text –

+0

musisz używać refleksji. [Jak animować tło ActionMode ActionBar?] (Http://stackoverflow.com/questions/23457709/how-to-animate-background-of-actionmode-of-the-actionbar) – adneal

Odpowiedz

0

można uzyskać identyfikator ActionMode za pomocą tego action_context_bar

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

daje mi to punkt zerowy zerowy –

+0

mnie 2 - otrzymałem punkt zerowy – Colateral

0

zorientowali się z refleksji pomoc. Bo nie mają 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) { 
     } 
    } 

Ponadto istnieją 2 implementacje ActionMode: StandaloneActionMode i ActionModeImpl. ten przykład tylko dla pierwszego. Dla drugiego będzie on taki sam