Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Iconos de flecha de retroceso y desbordamiento de color incorrecto en dispositivos pre-Lollipop después de actualizar a la biblioteca de soporte 23.2.0

En los dispositivos pre-Lollipop, el icono de menú de desbordamiento y el botón Atrás de la barra de acción cambiaron a color negro después de actualizar a la biblioteca de soporte 23.2.0. Son blancos (que es el color correcto) antes de la actualización.

El color correcto es: Introduzca aquí la descripción de la imagen

El color incorrecto aparece para los dispositivos pre-Lollipop después de la actualización, como se muestra con el icono del menú de desbordamiento:

Introduzca aquí la descripción de la imagen

El tema en sytle.xml (pre-v21 / Lollipop):

<resources xmlns:android="http://schemas.android.com/apk/res/android" > <!--Used on the application level by the manifest.--> <style name="app_theme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/app_primary_colour</item> <item name="colorPrimaryDark">@color/app_primary_dark_colour</item> <item name="colorAccent">@color/app_accent_colour</item> <item name="android:windowBackground">@color/app_background</item> <item name="searchViewStyle">@style/custom_search_view_style</item> </style> <!--Used by activities.--> <style name="app_theme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <!--TODO: What are these?--> <style name="app_theme.app_bar_overlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="app_theme.popup_overlay" parent="ThemeOverlay.AppCompat.Light" /> ... ... </resources> 

He mirado aquí y aquí, pero no arreglar el problema.

ACTUALIZACIÓN: consulte también este informe de errores de Google: https://code.google.com/p/android/issues/detail?id=201918

  • Establecer el ítem / id de elementos inicialmente seleccionado en BottomNavigationView
  • TabLayout dentro de la barra de herramientas
  • El texto de error en TextInputLayout está cubierto por el teclado
  • Stick vista en la parte inferior del fragmento de un viewpager dentro de la disposición del coordinador
  • Error de lanzamiento de NavigationView: No se encontró ningún identificador de recurso para el atributo 'menu' en el paquete
  • Panning google map en CoordinatorLayout hace que recyclerview se desplace en android design support library 23.0.1
  • EditText getHint () devuelve null al usar la biblioteca de soporte de diseño
  • Menú del cajón secundario
  • 5 Solutions collect form web for “Iconos de flecha de retroceso y desbordamiento de color incorrecto en dispositivos pre-Lollipop después de actualizar a la biblioteca de soporte 23.2.0”

    Podría arreglarlo.

    Descubrí que el tema AppCompat utiliza el siguiente recurso para el botón de desbordamiento: abc_ic_menu_overflow_material.xml

    El contenido de este recurso es:

     <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="?attr/colorControlNormal"> ... </vector> 

    Entonces, conecté los puntos:

    • Primero: Utiliza colorControlNormal
    • Segundo: Está utilizando el vector

    COMO ARREGLAR

    De acuerdo con las notas de la versión de la Biblioteca V23.2.0 ( LINK AQUÍ ), tenemos que actualizar build.gradle para agregar soporte a Vector:

    Construir un gradiente

    Añada las siguientes líneas a su gradle de construcción

    Gradle 2.0 (no he probado):

     android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 

    Gradle 1.5 (estoy usando esto .. funciona):

     android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } } 

    Cómo arreglar el tema

    Este paso puede ser ignorado. Algunos temas básicos ya establecen colorControlNormal a blanco (como AppCompat.Dark.ActionBar ).

    Sin embargo, en mi caso, todos los colores del botón se mantuvo negro y tuve que añadir el colorControlNormal a mi tema y anularlo con color blanco.

     <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="colorControlNormal">@color/white</item> </styel> 

    Espero que esto pueda ayudarte.

    Así fue como arreglé mi problema.

    Simplemente actualice la biblioteca de soporte 23.2.1, que corrige el problema.

    Para los usuarios de AppCompat , los indicadores para habilitar los elementos desplegables del vector de soporte descritos en la publicación 23.2 ( http://goo.gl/073Mpo ) ya no son necesarios para el uso de AppCompat.

    https://plus.google.com/+AndroidDevelopers/posts/BZgzpAqkd8G

    Tuve este problema al cambiar la biblioteca de soporte a 23.2.0. La flecha hacia atrás y los iconos de desbordamiento se volvieron negros.

     protected void changeBackArrow() { final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_material); upArrow.setColorFilter(ContextCompat.getColor(this, R.color.textColorPrimary), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow); } 

    Como soporte 23.1 La barra de herramientas ahora tiene los métodos getOverflowIcon () y setOverflowIcon ()

     protected void changeOverflowMenu() { final Drawable overflowIcon = getToolbar().getOverflowIcon(); overflowIcon.setColorFilter(ContextCompat.getColor(this, R.color.colorWhite), PorterDuff.Mode.SRC_ATOP); getToolbar().setOverflowIcon(overflowIcon); } 

    Estoy escribiendo esta respuesta, porque la respuesta aceptada no funcionó para mí (aunque sea correcta). Pero lo solucioné de otra manera, así que lo comparto aquí:

    En primer lugar, no agregué nada al archivo gradle. Estoy utilizando la Biblioteca de Soporte v23.4.0, ya que es la más reciente en el momento de escribir esta publicación.

    Lo que funcionó para mí es codificar el color del tinte o el color de la ruta, en lugar de usar una referencia de recursos de color . Por ejemplo, use android:fillColor="#fff" lugar de android:fillColor="@android:color/white" :

     <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:tint="#fff" android:viewportHeight="24" android:viewportWidth="24"> <path android:fillColor="#fff" android:pathData="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /> </vector> 

    Observe el tinte y el color de la ruta en el fragmento de código anterior. Anteriormente estaba asignando el color como "@color/someColor" pero estaba mostrando una advertencia de que funcionará sólo para v21 y superior, y en realidad no funcionaba por debajo de v21. Así que cambié eso a un valor codificado. Una vez más es una simple solución / hack y probablemente no es una solución correcta.

    Escribí una función auxiliar (que utilizo una clase auxiliar estática con funciones útiles), que se puede llamar al inicio de la onCreate () de una actividad:

      public static void setWhiteBackArrow(ActionBar actionbar, Context context){ //needed due to bug in Android compile version 23 // https://code.google.com/p/android/issues/detail?id=201918 if (actionbar != null) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { final Drawable upArrow = ContextCompat.getDrawable(context, android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material); upArrow.setColorFilter(ContextCompat.getColor(context, R.color.white), PorterDuff.Mode.SRC_ATOP); //ActionBar aBar = context.getSupportActionBar(); actionbar.setHomeAsUpIndicator(upArrow); } } 

    Llámelo así en el onCreate () de la actividad:

     Helper.setWhiteBackArrow(getSupportActionBar(), this); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.