J'utilise un AppCompatDialogFragment
pour afficher un fichier BottomSheetDialog
. Cliquez sur le bouton de retour pour Navigation Bar
fermer le fichier BottomSheetDialog
.
Je veux changer l'icône Navigation Bar
du bouton de retour en icône de flèche vers le bas. Cela se fait par défaut lorsque le clavier est affiché et que je souhaite le reproduire pour la feuille inférieure.
Pour être clair, voici ce que j'ai:
Et voici ce dont j'ai besoin:
Notez que le bouton de retour est une "flèche vers le bas".
La barre de navigation est un composant de l'interface utilisateur système et je ne vois pas comment changer son apparence pour qu'elle ressemble à la barre de navigation affichée lorsque le clavier est visible.
In android O the concept of changing the icon is introduced but it is still through the 3rd party app. Custom Navigation Bar that uses WRITE_SECURE_SETTINGS
to change the icons. In Android O you can change the display of the bar i.e Light or Dark theme.
Solution 2 can be more of a help to you. You can create a popup window
on navigation Bar with the desired layout i.e 3 buttons back, Recent Apps and home button. In this way you can change the back button icon accordingly. Make sure the pop up window is of same height as the navigation Bar and you can then make your own functions for home and recent apps and in back function
you can close your BottomSheetDialog
and remove that popup window.
Vous trouverez ci-dessous le code de la clé d'accueil ainsi que des applications récentes. Pour le bouton de retour, faites en conséquence ce que vous voulez réaliser avec votre propre icône.
Pour le bouton d'accueil.
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Pour les applications récentes.
Class serviceManagerClass = Class.forName("android.os.ServiceManager");
Method getService = serviceManagerClass.getMethod("getService", String.class);
IBinder retbinder = (IBinder) getService.invoke(serviceManagerClass, "statusbar");
Class statusBarClass = Class.forName(retbinder.getInterfaceDescriptor());
Object statusBarObject = statusBarClass.getClasses()[0].getMethod("asInterface", IBinder.class).invoke(null, new Object[] { retbinder });
Method clearAll = statusBarClass.getMethod("toggleRecentApps");
clearAll.setAccessible(true);
clearAll.invoke(statusBarObject);
Pour le bouton Retour // utilisez votre icône et la fonction de fermeture du BottomSheetDialog.
Pour calculer la hauteur de la barre de navigation
public static int getSoftButtonsBarSizePort(Activity activity) {
// getRealMetrics is only available with API 17 and +
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight)
return realHeight - usableHeight;
else
return 0;
}
return 0;
}
vous pouvez également le faire par des adb
commandes, mais assurez-vous que cela peut gâcher votre navigationBar
et que vous ne pouvez pas récupérer votre original navigationBar
.
J'espère que cela aide.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots