2012-04-26 14 views
23

Szukam informacji o stylu na pasku działań kontekstowych (CAB). Muszę tylko zmienić kolor tekstu w rzeczywistości ..Kontekstowe style paska czynnościowego

Result of contextual actionbar

Jak widać z powyższego, to jest przy użyciu standardowego Theme.Holo.Light.DarkActionBar temat, więc po prostu trzeba ustawić kolor tekstu na biały!

Czy ktoś może wskazać mi właściwy kierunek?

+1

Wygląda na to, że jest to błąd: http://code.google.com/p/android/issues/detail?id=26008 –

Odpowiedz

51

Aby zmienić kolor/etc tekstu w kontekstowym pasku akcji:

public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
    //mode.setTitle("Contextual Action Bar"); (replace this call) 
    TextView tv= (TextView)getLayoutInflater().inflate(R.layout.contextual_title, null); 
    tv.setText("Contextual Action Bar"); 
    mode.setCustomView(tv); 

gdzie układ/contextual_title.xml zawiera pojedynczy TextView z koloru/rozmiar/wymarzonego stylu itp

W Faktem jest, że prawie wszystko w kontekstowym pasku akcji może być stylizowane. Jedynym problemem jest to, że szukanie słowa "kontekstualny" nie prowadzi do niczego użytecznego. Odpowiednie funkcje stylizacji nazywa się "actionMode ...". Oto niektóre użyłem (zdefiniowane w moim tematem.)

<item name="android:actionModeCloseDrawable">@drawable/check</item> 
<item name="android:actionModeCutDrawable">@drawable/ic_menu_cut_holo_dark</item> 
<item name="android:actionModeCopyDrawable">@drawable/ic_menu_copy_holo_dark</item> 
<item name="android:actionModePasteDrawable">@drawable/ic_menu_paste_holo_dark</item> 
<item name="android:actionModeSelectAllDrawable">@drawable/ic_menu_selectall_holo_dark</item> 
<item name="android:actionModeBackground">@drawable/contextual</item> 
<item name="android:actionModeCloseButtonStyle">@style/MyCloseButton</item> 

<!-- these change the press backgrounds for the vanilla actionBar and for search --> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:selectableItemBackground">@drawable/bar_selector</item> 
<item name="android:actionBarItemBackground">@drawable/bar_selector</item>  

<!-- these were defined in platform/.../data/res/values/... but Eclipse didn't recognize them --> 
<!--? item name="android:actionModeShareDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeFindDrawable">@drawable/icon</item --> 
<!--? item name="android:actionModeWebSearchDrawable">@drawable/icon</item --> 
<!-- item name="android:actionModeBackground">@drawable/red</item --> 

<!-- and finally --> 
<style name="MyCloseButton" parent="android:style/Widget.ActionButton.CloseMode"> 
    <item name="android:background">@drawable/bar_selector</item> 
</style> 

można łatwo ustawić własne ikony edycji tekstu Wytnij/Wklej/Kopiuj/selectAll pasek tło, a tło ikona zmienia kolor, gdy naciskasz ikony (powyższy parametr bar_selector). Ikony są widokami obrazu, a nie przyciskami, a identyfikator edycji (i tło do naciśnięcia) są dołączone do rodzica ImageView (jeden rodzic na widok), który jest typem "wewnętrznym".

Nigdy nie wiadomo, co się dzieje w stylistyce - znalazłem tam, gdzie wybranoItemBackground znajdowało się w platformie Themes.xml, i kopiowałem i modyfikowałem wskazywane przeciągnięcie.

+1

coś, czego nie omówiono tutaj - jak zmienić kolor tekstu przycisku zamykania (nie tytuł). na wielu moich urządzeniach wciąż jest ciemno, mimo że ustawiłem styl przycisku trybu zamkniętego, aby był normalnym hologramem. Próbowałem nawet ustawić kolor tekstu w stylu zamykania. –

+0

To nie odpowiada na pytanie, na które zwrócił uwagę Jeffrey. –

+0

Czy możesz wyjaśnić bardziej szczegółowo, jak zmieniasz tło CAB, ponieważ kiedy umieszczam item = "android: actionModeBackground" w moim stylu na moim pasku akcji, nic mi się nie dzieje :( – Sandra

0

Jeśli uruchamiasz tryb działania kontekstowego ręcznie, możesz wywołać setTheme() z nowym motywem przed jego uruchomieniem (być może Theme.AppCompat.Light.DarkActionBar, jeśli próbujesz uniknąć problemu z czarną na czarną czcionką). Nie wpłynie to na motyw bieżącej aktywności, jeśli już ustawiłeś widok treści działania.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.my_activity_layout); 

    // these lines can occur anywhere so long as you've already 
    // called "setContentView()" on the activity. The theme 
    // you set here will apply to the action mode, but not to 
    // the activity. 
    setTheme(R.style.Theme_AppCompat_Light_DarkActionBar); 
    startSupportActionMode(myActionModeCallback); 

} 
0

działa teraz, ale trzeba wprowadzić je w wartościach/styles.xml (nie wartości-v #/styles.xml) i wprowadzić ją w ogólnym (non-API konkretny tag)

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:actionModeCloseDrawable">@drawable/ic_launcher</item> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style>