Вопрос по android – Контекстные стили Actionbar

23

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

Result of contextual actionbar

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

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

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

Ваш Ответ

4   ответа
0

теперь он работает, но вы должны ввести его в values / styles.xml (не 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>
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);

где 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, и скопировал и изменил нарисованный объект, на который указывал.

Error: User Rate Limit Exceeded Eurig Jones
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Eurig Jones
Error: User Rate Limit Exceeded
4

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

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

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

}

Похожие вопросы