Alors maintenant qu'Android 5.0 est sorti, je me demandais comment styliser les icônes animées de la barre d'actions.
Cette bibliothèque ici la met en œuvre et la stylise, mais comme la bibliothèque appcompat v7 la propose, comment peut-elle être stylée?
Cela a été implémenté avec DrawerToggle v7. Cependant, je ne peux pas le nommer. S'il vous plaît aider
J'ai trouvé le style pour cela dans la v7 styles_base.xml
<style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
<item name="color">?android:attr/textColorSecondary</item>
<item name="thickness">2dp</item>
<item name="barSize">18dp</item>
<item name="gapBetweenBars">3dp</item>
<item name="topBottomBarArrowSize">11.31dp</item>
<item name="middleBarArrowSize">16dp</item>
<item name="drawableSize">24dp</item>
<item name="spinBars">true</item>
</style>
J'ai ajouté cela à mes styles et je n'ai pas fonctionné. Également ajouté à mon attr.xml
<declare-styleable name="DrawerArrowToggle">
<!-- The drawing color for the bars -->
<attr name="color" format="color"/>
<!-- Whether bars should rotate or not during transition -->
<attr name="spinBars" format="boolean"/>
<!-- The total size of the drawable -->
<attr name="drawableSize" format="dimension"/>
<!-- The max gap between the bars when they are parallel to each other -->
<attr name="gapBetweenBars" format="dimension"/>
<!-- The size of the top and bottom bars when they merge to the middle bar to form an arrow -->
<attr name="topBottomBarArrowSize" format="dimension"/>
<!-- The size of the middle bar when top and bottom bars merge into middle bar to form an arrow -->
<attr name="middleBarArrowSize" format="dimension"/>
<!-- The size of the bars when they are parallel to each other -->
<attr name="barSize" format="dimension"/>
<!-- The thickness (stroke size) for the bar Paint -->
<attr name="thickness" format="dimension"/>
</declare-styleable>
Mais se bloque et dit une erreur de type de couleur en le faisant. Qu'est-ce que je rate?
Ce qui suit fonctionne pour moi:
<style name="MyTheme" parent="Theme.AppCompat">
<item name="drawerArrowStyle">@style/MyDrawerArrowToggle</item>
</style>
<style name="MyDrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@color/your_color</item>
</style>
Dans mon cas, je voulais changer la couleur de la flèche du tiroir et de l’icône du hamburger . Régler le style de la flèche du tiroir ne changeait que la couleur de l’icône du hamburger.
J'ai donc ouvert le style Widget.AppCompat.DrawerArrowToggle
dans values.xml
de appcompat-v7.
<style name="Widget.AppCompat.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle">
<item name="color">?attr/colorControlNormal</item>
</style>
J'ai donc créé un thème spécial:
<style name="Toolbar_Theme">
<item name="colorControlNormal">@Android:color/black</item>
</style>
et l'a appliqué à ma barre d'outils comme suit:
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
app:theme="@style/Toolbar_Theme" />
Notez que j'utilise theme
attribut au lieu de définir controlColorNormal
dans mon thème d'application. De cette façon, la couleur s'appliquera uniquement aux éléments de la barre d'outils. Si je la configure dans le thème de l'application, elle affectera également la couleur des barres de défilement, etc.
La définition de l’attribut colorControlNormal
change à la fois la couleur du hamburger et la flèche du tiroir.
Pour ceux qui se retrouvent ici (comme je l'ai fait) à la recherche d'un moyen de remplacer l'icône d'indicateur de tiroir par votre propre dessin (non animé) à l'aide de la v7 ActionBarDrawerToggle, vous pouvez procéder comme suit:
//After instantiating your ActionBarDrawerToggle
mDrawerToggle.setDrawerIndicatorEnabled(false);
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.your_custom_icon, getActivity().getTheme());
mDrawerToggle.setHomeAsUpIndicator(drawable);
mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mDrawerLayout.isDrawerVisible(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
} else {
mDrawerLayout.openDrawer(GravityCompat.START);
}
}
});
Pour mon cas, la thématisation de la barre d’action était pertinente pour basculer entre une icône de hamburger blanc et noir:
<item name="actionBarWidgetTheme">@style/Theme.AppCompat</item>
vs.
<item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item>
Je voulais faire le hamburguer/arrow white, mais rien de tout ce "style" n'a fonctionné pour moi . J'ai enlevé tout et en ajoutant cette ligne il suffit de le résoudre, en tant qu'attribut du "L'élément Android.support.v7.widget.Toolbar" dans la mise en page:
Android: theme = "@ style/ThemeOverlay.AppCompat.Dark.ActionBar