web-dev-qa-db-fra.com

Barre d'outils AppCompat: modifier la couleur de l'icône de dépassement dans ActionMode

Avec la barre d'outils AppCompat, je veux pouvoir changer la couleur de l'icône du menu de débordement lors du changement d'ActionMode.

Par exemple, l'icône de débordement sera blanche en mode normal de barre d'outils. Et deviendra noir sur ActionMode. Jusqu'à présent, j'ai réussi à changer l'arrière-plan du mode d'action ainsi que le texte du titre. Mais je n'ai pas encore trouvé de moyen de changer la couleur de l'icône du menu de débordement.

Je sais qu'une réponse est disponible: Changer l'icône de débordement du mode d'action

J'ai essayé la première solution et je n'ai pas pu trouver l'icône de débordement.

La deuxième solution, même avec un retard de 50L, fait clignoter l'icône du menu de débordement de la couleur voulue de l'ActionMode pendant une brève fraction de seconde qui est très choquante.

23
Jun

Ajoutez la ligne ci-dessous dans votre attribut de thème:

<item name="Android:textColorSecondary">@Android:color/white</item>
60
Piyush

Ceci peut être réalisé en définissant le Android:textColorSecondary attribut de thème.

Par exemple, supposons que vous ayez la barre d'outils suivante, qui utilise le thème MyToolbarStyle:

<Android.support.v7.widget.Toolbar
  xmlns:app="http://schemas.Android.com/apk/res-auto"
  Android:id="@+id/main_toolbar"
  Android:layout_width="match_parent"
  Android:layout_height="wrap_content"
  Android:minHeight="?attr/actionBarSize"
  theme="@style/MyToolbarStyle"
/>

Ensuite, définissez le style MyToolbarStyle, héritant de ThemeOverlay.AppCompat.ActionBar. Enfin, modifiez la couleur de l'icône de débordement en ajoutant un élément pour Android:textColorSecondary:

<style name="MyToolbarStyle" parent="ThemeOverlay.AppCompat.ActionBar">
  <item name="Android:textColorSecondary">#333333</item>
</style>
14
Patrick McLaren
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
     <item name="Android:actionOverflowButtonStyle">@style/ActionButton.Overflow.Icon</item>
 </style>

 <style name="ActionButton.Overflow.Icon" parent="Android:style/Widget.Holo.Light.ActionButton.Overflow">
     <item name="Android:src">@mipmap/yourwanticon</item>
 </style>
7
androidmalin

Ajoutez ce code sur votre res-> styles.xml

<style name="ToolbarColored" parent="AppTheme">
<item name="Android:textColorSecondary">YOUR_COLOR</item>
</style>

Ensuite, votre style "ToolbarColored" dans votre fichier XCML comme belove

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        app:theme="@style/ToolbarColored"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
4
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="Android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item>

    <!-- Support library compatibility -->
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item>
</style>

<style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
    <item name="Android:tint">@color/brand_white</item>
</style>
2
Niranjan

Pour modifier correctement la couleur de l'icône du menu de débordement de votre barre d'outils, définissez le thème de votre barre d'outils sur un thème ActionBar sombre AppCompat. Par exemple:

Dans votre fichier res/values ​​/ style.xml, créez un thème qui hérite d'AppCompat de cette manière:

<style name="AppTheme.MyThemeName" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

Définissez maintenant le thème de votre barre d'outils sur ce thème:

<Android.support.v7.widget.Toolbar
  Android:id="+id/my_toolbar_id
  Android:layout_width="match_parent"
  Android:layout_height="@dimen/my_toolbar_height"
  Android:theme="@style/AppTheme.MyThemeName">

</Android.support.v7.widget.Toolbar>
2
Chad Mx

Si vous utilisez la barre d'outils dans votre xml d'activité, vous pouvez utiliser quelque chose comme ceci

toolbar?.navigationIcon?.setColorFilter(ContextCompat.getColor(this, Android.R.color.black), PorterDuff.Mode.SRC_ATOP)
1
Abhishek

Créez d'abord votre style personnalisé

 <style name="ToolbarColoredBackArrow" parent="AppTheme">
    <item name="Android:textColorSecondary">@color/white</item>
 </style>

Ensuite, ajoutez-le simplement dans votre barre d'outils

     <Android.support.v7.widget.Toolbar
          Android:id="@+id/toolbar"
          Android:layout_width="match_parent"
          Android:titleTextColor="@color/white"
          app:theme="@style/ToolbarColoredBackArrow"
          Android:layout_height="?attr/actionBarSize"
          app:layout_scrollFlags="scroll|enterAlways"
          Android:background="?attr/colorPrimary" />
1
pavel
<style name="ToolBarTheme" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="Android:tint">@color/colorAccent</item>

créez la teinte theme.set ci-dessus avec votre couleur et ajoutez ce thème à la barre d'outils.

<androidx.appcompat.widget.Toolbar
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:minHeight="?attr/actionBarSize"
        Android:theme="@style/ToolBarTheme"/>
0

Si vous voulez que l'icône du menu de débordement blanc, ajoutez simplement Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" à votre code de disposition de la barre d'outils.

Si vous voulez que l'icône du menu de débordement sombre, utilisez Android:theme="@style/Base.Widget.AppCompat.Light.PopupMenu"

Le code final est donc quelque chose comme:

<Android.support.v7.widget.Toolbar
        Android:id="@+id/a_main_tb"
        Android:layout_width="match_parent"
        Android:layout_height="?actionBarSize"
        Android:background="@color/colorPrimary"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:title="@string/app_name"
        app:titleTextColor="#ffffff"
        />

Vous devez également comprendre que cela changera également la couleur des éléments du menu.

0
Daniel