2012-04-26 2 views
23

Я ищу информацию о стиле на панели контекстного действия (CAB). Мне просто нужно, чтобы изменить цвет текста на самом деле ..Контекстные стили Actionbar

Result of contextual actionbar

Как видно из сказанного выше, это с помощью стандартного Theme.Holo.Light.DarkActionBar тему, так что я просто необходимо установить цвет текста в белый цвет!

Может ли кто-нибудь указать мне правильное направление?

+1

Похоже, что это ошибка: http://code.google.com/p/android/issues/detail?id=26008 –

ответ

4

Я отправил комментарий к моему собственному вопросу, и это на самом деле ошибка в версии андроида я использовал (возможно раннюю версия 4.0)

Это ошибка описано: http://code.google.com/p/android/issues/detail?id=26008

51

Чтобы изменить цвет/и т.д. текста в контекстной панели действий:

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); 

где макет/contextual_title.xml содержит один TextView с нужным цветом/размер/стиль и т.д.

В факт, почти все в контекстной панели действий может быть оформлено. Единственная проблема заключается в том, что поиск слова «контекстуальный» ни к чему не приводит. Соответствующие стилистические функции называются «actionMode ...». Вот некоторые я (определенные в моей теме.)

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

Вы можете легко настроить свои собственные иконки редактирования текста вырезать/вставить/копировать/SelectAll, фон бара и фон значка, который меняет цвет, когда вы нажимаете значки (bar_selector выше). Значки - это ImageViews, а не кнопки, а идентификатор редактирования (и фон, пригодный для печати) прикрепляются к родительскому элементу ImageView (по одному родительскому представлению), который является «внутренним» типом.

Непонятно, что происходит в стилях - я нашел, где selectableItemBackground находился в платформе Themes.xml, а также скопировал и модифицировал нарисованный указатель.

+1

одна вещь, которая здесь не рассматривается - как изменить цвет текста кнопки закрытия (а не название). на многих моих устройствах он по-прежнему выглядит темным, даже если я установил стиль кнопки режима закрытия, чтобы быть обычным голосом. Я даже попытался установить цвет текста в стиле закрытого режима. –

+0

Это не отвечает на вопрос, как указал Джеффри. –

+0

Можете ли вы, пожалуйста, более подробно объяснить, как изменить фон CAB, потому что, когда я помещаю элемент = "android: actionModeBackground" в мой стиль для своего действия, ничего не происходит для меня :( – Sandra

0

Если вы запускаете режим контекстного действия вручную, вы можете вызвать setTheme() с новой темой перед ее запуском (возможно, Theme.AppCompat.Light.DarkActionBar, если вы пытаетесь избежать черной проблемы с черным текстом). Это не повлияет на тему текущей деятельности, если вы уже установили представление содержимого активности.

@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

он теперь работает, но вы должны ввести его в значениях/styles.xml (не значения-v #/styles.xml) и ввести его в общем (не API конкретный тег)

<!-- 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>