Подтвердить что ты не робот

Контекстные стили Actionbar

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

Result of contextual actionbar

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

где layout/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>

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

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

Ответ 3

Если вы запускаете режим контекстного действия вручную, вы можете вызвать 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);

}

Ответ 4

он работает сейчас, но вы должны ввести его в значения /styles.xml(not values-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>