Cómo diseñar el DrawerArrowToggle de Android appcompat v7 21 library

Así que ahora que se lanzó Android 5.0, me preguntaba cómo estilizar los iconos de la barra de acción animada.

Esta biblioteca aquí implementa y estilos de multa para mí, pero desde la librería appcompat v7 lo tiene ¿cómo se puede diseñar?

Tengo esto implementado con el v7 DrawerToggle. Sin embargo, no puedo estilo. Por favor ayuda

He encontrado el estilo para él en 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> 

He añadido esto a mis estilos y no funcionó. También se agregó a mi 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> 

Pero se bloquea y dice error de tipo de color al hacerlo. ¿Qué me estoy perdiendo?

Lo siguiente funciona para mí:

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

En mi caso quería cambiar el color de la flecha del cajón y el icono de la hamburguesa. La configuración del estilo de flecha del cajón cambió sólo el color del icono de la hamburguesa.

Así que abrí Widget.AppCompat.DrawerArrowToggle estilo en values.xml de appcompat-v7.

 <style name="Widget.AppCompat.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle"> <item name="color">?attr/colorControlNormal</item> </style> 

Así que creé un tema especial:

 <style name="Toolbar_Theme"> <item name="colorControlNormal">@android:color/black</item> </style> 

Y lo apliqué a mi barra de herramientas como sigue:

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:theme="@style/Toolbar_Theme" /> 

Tenga en cuenta que estoy utilizando el atributo de theme lugar de definir controlColorNormal en el tema de mi aplicación. De esta manera, el color sólo se aplicará a los elementos de la barra de herramientas, si lo configuro en el tema de la aplicación, también afectará al color de las barras de desplazamiento, etc.

El ajuste del atributo colorControlNormal cambia tanto el color de la hamburguesa como la flecha del cajón.

Para cualquiera que termine aquí (como lo hice) buscando una manera de reemplazar el icono del indicador del cajón con su propio dibujable (no animado) usando el v7 ActionBarDrawerToggle, puede hacer lo siguiente:

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

Para mi caso, el tema de la barra de acción era relevante para cambiar entre un icono de hamburguesa blanca y otra oscura:

 <item name="actionBarWidgetTheme">@style/Theme.AppCompat</item> 

Vs

 <item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 

Su nombre de estilo no tiene ningún padre Aquí está trabajando con android 5 y tema material, sin necesidad de reemplazar la barra de acción con appCompat Aquí está mi estilo, sólo necesitaba cambiar el color a blanco porque tenía una barra de color

  <style name="myTheme.DrawerArrowToggle" parent="Base.Widget.AppCompat.DrawerArrowToggle"> <item name="color">@color/white</item> </style> 

Y aquí está mi tema

 <style name="Theme_AppTheme.Light" parent="@android:style/Theme.Material.Light"> <!-- Drawer\arrow in white --> <item name="drawerArrowStyle">@style/myTheme.DrawerArrowToggle</item> 

PD. Sólo hay un problema, en adroid 4.4 y la barra de acción normal no está prestando bien. Y, desafortunadamente, el nero de cajón de la v7 no hereda de v4

No estoy seguro de cuál es el error exacto, si usted consigue el color ya definido, vaya a la búsqueda de attrs.xml para attr nombre = "color" y renombre él o para el comentario de la prueba él, usted puede ser que necesite cambiar su attr personalizado a algún otro nombre, no seguro Este es un problema de lib de soporte, esto funciona para mí

  • Android: Control Desplazamiento suave sobre la vista del reciclador
  • Hacer imagen Archivo visible en la Galería de Android en Lollipop
  • Android READ_EXTERNAL_STORAGE permiso no funciona
  • Diferentes estilos de colorControlActivated en Android
  • Estilo de la barra de herramientas Android
  • Howto para obtener el camino real con ACTION_OPEN_DOCUMENT_TREE intención. Lollipop API 21 & 22
  • Estilo de un AppCompatButton en v21 para no tener sombra y radio de esquina de cero
  • Android 5.0 Regiones de recorte incorrectas en la superficie de vista previa y capturada imagen fija
  • Ciertos estilos de ProgressBar no se muestran en Nexus 5 Android 5.0.1
  • Android lectura / escritura de archivos en la unidad USB OTG programatically
  • ¿Cómo puedo recibir una notificación cuando el dispositivo pierde conectividad de red en android L (API 21)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.