Android Studio 2.3
J'essaie de changer le bouton de fermeture par défaut dans la barre d'action des onglets chromés personnalisés. J'ai essayé de définir avec setCloseButtonIcon()
Cependant, le bouton de fermeture par défaut est toujours affiché. Je veux changer le proche d'une flèche.
Mon code ci-dessous:
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()));
}
Merci d'avance,
J'ai une observation Le mois dernier, lors de la recherche dans SO de divers problèmes liés aux onglets personnalisés chromés, j'ai trouvé ceci réponse suggérant d'utiliser l'icône de la taille 24dp et également trouvé cette question disant que cela fonctionne bien PNG.
J'ai vérifié votre code en utilisant l'icône de la flèche de retour depuis ici .
Lorsque j'ai utilisé "ic_arrow_back_black_48dp" , le bouton de fermeture par défaut n'a pas été remplacé par une flèche (voir l'image de gauche).
final Bitmap backButton = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_48dp);
Mais quand j'ai utilisé "ic_arrow_back_black_24dp" , le bouton de fermeture par défaut a parfaitement changé en une flèche (voir l'image de droite).
final Bitmap backButton = BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back_black_24dp);
Comme cela a parfaitement fonctionné pour moi, vous devriez également essayer avec "24dp" size icône de flèche arrière de ici au lieu de "48dp" size icône de la flèche arrière.
Capture d'écran: [Device: ASUS_Z00UD; OS: 6.0.1]
En supposant que vous utilisez la bibliothèque Google et non l'une de celles qui lui sont associées, la taille des icônes doit être de 24dp comme indiqué dans le document documenté ici .
Ceci peut être réalisé avec les options 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);
Vous pouvez directement obtenir BitmapDrawable
à partir de Drawable
mais pas à partir de VectorDrawable
car setCloseButtonIcon
requiert @NonNull Bitmap icon
Vous pouvez également utiliser svg comme suit. Téléchargez le svg d'ici ic_arrow_back_black_24px
Les méthodes ci-dessous sont explicites:
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;
}
Vous pouvez utiliser ce qui précède comme:
builder.setCloseButtonIcon(getBitmapFromDrawable(this, R.drawable.ic_arrow_back_black_24px));
pourquoi ne pas ajouter une image et stocker dans mipmap, il sera alors plus facile d’utiliser les icônes par défaut intégrées à Android studio Assest Studio
Après le téléchargement Vous pouvez facilement accéder aux icônes et aux images de mipmap au format xml en utilisant la ressource src dans ImageView
Android:src="@mipmap/ic_launcher"
J'ai dû aller sur ce site: https://material.io/tools/icons/?icon=keyboard_backspace&style=baseline
J'ai eu le PNG et ensuite utilisé de cette façon. Je sais que je suis en retard pour la fête, mais pour ceux qui en ont besoin.