Las pestañas personalizadas de Chrome cambian el botón de cierre predeterminado que no funciona

Android Studio 2.3 

Estoy tratando de cambiar el botón de cierre predeterminado en la barra de acción de las pestañas cromadas personalizadas. He intentado fijar usando setCloseButtonIcon() Sin embargo, el botón del cierre del defecto todavía muestra. Quiero cambiar el cierre de una flecha.

Mi código abajo:

 public void openHomePage() { final CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); builder.setToolbarColor(ContextCompat.getColor(getActivity(), R.color.primary)); final Bitmap backButton = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_48dp); builder.setCloseButtonIcon(backButton); builder.setShowTitle(true); final CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(getActivity(), Uri.parse(mTvHomepage.getText().toString())); } 

Muchas gracias de antemano,

Tengo una observación. El mes pasado, al buscar a través de SO para diversos problemas cromados de la pestaña personalizada, encontré esta respuesta sugiriendo utilizar icono de tamaño 24dp y también encontré esta pregunta diciendo que está funcionando bien con PNG.

He comprobado su código con el uso de icono de flecha hacia atrás desde aquí .

Cuando usé "ic_arrow_back_black_48dp" , no cambió el botón de cierre predeterminado a una flecha (ver imagen izquierda).

 final Bitmap backButton = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_48dp); 

Pero cuando utilicé "ic_arrow_back_black_24dp" , cambió perfectamente el botón de cierre predeterminado a una flecha (ver imagen derecha).

 final Bitmap backButton = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_24dp); 

Como ha funcionado perfectamente para mí, también debe probar con "24dp" tamaño de flecha hacia atrás icono de aquí en lugar de "48dp" tamaño de flecha hacia atrás icono.

Captura de pantalla : [Dispositivo: ASUS_Z00UD; OS: 6.0.1]

El botón de cierre predeterminado ha cambiado a una flecha cuando se utiliza el icono de tamaño 24dp en lugar del tamaño 48dp.

Presumiendo que está utilizando la biblioteca de Google y no de los relacionados, el tamaño de los iconos debe ser 24dp como se documenta aquí .

Esto se puede lograr con las opciones de BitmapFactory:

 BitmapFactory.Options options = new BitmapFactory.Options(); options.outWidth = 24; options.outHeight = 24; options.inScaled = true; //already default, just for illustration - ie scale to screen density (dp) ... = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_48dp, opts); 

Puede obtener directamente BitmapDrawable de Drawable pero no de VectorDrawable como setCloseButtonIcon requiere @NonNull Bitmap icon

También puede usar svg de la siguiente manera. Descargue la svg desde aquí ic_arrow_back_black_24px

A continuación los métodos se explican por sí mismos:

 private static Bitmap getBitmapFromDrawable(Context context, int drawableId) { Drawable drawable = ContextCompat.getDrawable(context, drawableId); if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable) drawable).getBitmap(); } else if (drawable instanceof VectorDrawable) { return getBitmapFromVectorDrawable((VectorDrawable) drawable); } else { throw new IllegalArgumentException("Unable to convert to bitmap"); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private static Bitmap getBitmapFromVectorDrawable(VectorDrawable vectorDrawable) { Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); vectorDrawable.draw(canvas); return bitmap; } 

Puede utilizar lo anterior como:

 builder.setCloseButtonIcon(getBitmapFromDrawable(this, R.drawable.ic_arrow_back_black_24px)); 

Ref de SO

Porqué no usted agrega el activo y la característica de la imagen en mipmap entonces será más fácil utilizar iconos del defecto incorporados en el estudio del androide Estudio del asalto

Después de cargar Usted puede acceder fácilmente a los iconos y la imagen de mipmap en el archivo xml utilizando recurso src en ImageView por un instante

 android:src="@mipmap/ic_launcher" 
  • El método setCloseButtonIcon () no cambia por defecto.
  • Obtener un diálogo ANR cuando abra los vínculos de WebView en las pestañas personalizadas de Chrome. ¿Cómo depurar esto?
  • Com.android.support:customtabs: No hay método virtual launchUrl
  • ¿Cómo puedo comprobar si Chrome admite pestañas personalizadas de Chrome?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.