it-swarm.com.ru

Как изменить цвет фона ActionMode в Android

я создаю приложение для Android, в котором уровень поддержки API равен 7, поэтому я использую панель действий Шерлока. Я использую режим действия в этом . Проблема, я хочу изменить фон режима действия. Итак, я попробовал 

    <item name="Android:background">@color/something</item>
    <item name="Android:backgroundStacked">@color/something</item>
    <item name="Android:backgroundSplit">@color/something</item>

эти стилевые решения доступны, но ни один из них не работает. http://i43.tinypic.com/2nriic1.png

16
Love Garg

если вы хотите изменить цвет ActionBar, просто сделайте это:

 ActionBar bar = getActionBar();
 bar.setBackgroundDrawable(new ColorDrawable("COLOR"));

см. следующую ссылку для получения дополнительной информации

и если вы используете ActionMode Это стиль, используемый для любого ActionMode. Вам нужно будет создать свой собственный стиль, чтобы настроить его

<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>

больше информации в этот сайт

увидеть это тоже

Правка

для предварительной соты см. это пожалуйста

возможно это или это помогло тебе

16
Shayan Pourvatan

В моем случае я решил с этим. Сначала я создал стиль для определения actionModeBackground:

<style name="MyTheme.ActionMode" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:actionModeBackground">#FFFFFF</item>
</style>

Затем я добавляю стиль в мою базовую тему приложения:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="Android:actionModeStyle">@style/MyTheme.ActionMode</item>
</style>

Надеюсь, поможет!!!

29
Kokusho

Если вы используете простой Панель действий , попробуйте это, 

ActionBar abar = getActionBar();
abar.setBackgroundDrawable(new ColorDrawable(0xff123456));

Но если вы используете Actionbar share lock Lib , попробуйте это 

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff123456));

ColorDrawable(0xff123456) - должен быть ваш цветовой код.

Drawable/styles.xml 

 <item name="Android:actionModeBackground">@drawable/actionbar_background</item>
 <item name="actionModeBackground">@drawable/actionbar_background</item>

Изменить тему согласно уровню API 

Если вы хотите изменить в соответствии с уровнем API, вы должны пойти на это

15
Chintan Khetiya

Если вы хотите сделать это программно (с поддержкой AppCompat), вам нужно искать значок родительского представления. Этот код проверен с 2.3.7 до 6.0.1. Вы должны проверить на более низком API ...

сначала получить вид деятельности декора  

final ViewGroup  decorView = (ViewGroup) getActivity().getWindow().getDecorView();

второй установить цвет в onPrepareActionMode. Вы также можете установить значок назад или другие элементы здесь

@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) 
{

     decorView.postDelayed(new Runnable() {

     @Override
     public void run() 
     {
        int buttonId = getResources().getIdentifier("action_mode_close_button", "id", "Android");

        View v = decorView.findViewById(buttonId);
        if (v == null)
        {
           buttonId = R.id.action_mode_close_button;
            v = decorView.findViewById(buttonId);   
        }

        if (v != null)
        {                         
           ((View)v.getParent()).setBackgroundColor(Color.red /*your color here*/);
        }               
     }   
     }, 500);}
3
Colateral

Переопределите этот стиль в вашей пользовательской теме:

<style name="Base.Widget.AppCompat.ActionMode" parent="">
    <item name="background">?attr/actionModeBackground</item>
    <item name="backgroundSplit">?attr/actionModeSplitBackground</item>
    <item name="height">?attr/actionBarSize</item>
    <item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Title</item>
    <item name="subtitleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionMode.Subtitle</item>
    <item name="closeItemLayout">@layout/abc_action_mode_close_item_material</item>
</style>

Например:

<style name="LywActionMode" parent="Base.Widget.AppCompat.ActionMode">
    <item name="background">@color/lyw_primary_color</item>
    <item name="backgroundSplit">@color/lyw_primary_color</item>
</style>

<style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light">
    ...
    <item name="actionModeStyle">@style/LywActionMode</item>
</style>
2
Arkadiusz Cieśliński

Самый простой способ сделать это

ActionBarContextView actionBar = getWindow().getDecorView().findViewById(R.id.action_mode_bar);
    actionBar.setBackgroundColor(WhateverColorYouWant);
1
Eugene Sianko

Это стиль, используемый для любого ActionMode, я вытащил его из SDK. Вам нужно будет создать свой собственный стиль, чтобы настроить его. Это действительно легко сделать. Если вы никогда не делали ничего подобного раньше, вы должны прочитать этот пост о настройке ActionBar. Это объясняет все, что вам нужно знать.

<style name="Widget.ActionMode">
<item name="Android:background">?android:attr/actionModeBackground</item>
<item name="Android:backgroundSplit">?android:attr/actionModeSplitBackground</item>
<item name="Android:height">?android:attr/actionBarSize</item>
<item name="Android:titleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Title</item>
<item name="Android:subtitleTextStyle">@Android:style/TextAppearance.Widget.ActionMode.Subtitle</item>
</style>
1
M D

Для тех, кто все еще борется, и ни одно из существующих решений не помогает, пожалуйста, убедитесь, что в вашем макете с панелью инструментов у вас есть это:

app:popupTheme="@style/Theme.ToolBar"
Android:popupTheme="@style/Theme.ToolBar"

а у тебя нет 

app:theme="@style/Theme.ToolBar"

Так как они вызовут конфликт, и ваши настройки не будут работать.

0
Roger Alien

Я хочу прояснить этот ответ. Сначала создайте пользовательский фон «storage_list_header_shape.xml» в папке для рисования.

<?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
     Android:shape="rectangle" >

   <gradient
      Android:angle="270"
      Android:startColor="@Android:color/holo_orange_light"
      Android:centerColor="@Android:color/holo_orange_dark"
      Android:endColor="@Android:color/holo_orange_light" />

   <size Android:height="3dp" />

 </shape>

Во-вторых, создайте собственный стиль в вашем style.xml

<style name="customActionModeTheme" parent="@Android:style/Theme.Holo.Light">
    <item name="Android:actionModeBackground">@drawable/storage_list_header_shape</item>
</style>

В-третьих, назовите стиль в своем манифесте.

<activity
     Android:name="com.javacafe.activities.Main"
     Android:launchMode="singleTop"
     Android:screenOrientation="sensorLandscape"
     Android:theme="@style/customActionModeTheme" >
</activity>
0
nAkhmedov