La récente bibliothèque Android est sortie il y a quelques jours à peine, mais j'aimerais que SnackBar
apparaisse en haut de l'écran, de préférence dans un RelativeLayout en tant que vue parent.
Comment peut-on changer l'alignement initial de SnackBar
, que je présume être layout_alignParentBottom
en layout_alignParentTop
?
Il est possible de faire apparaître la barre en haut de l'écran en utilisant ceci:
Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show()
Remarque: l'animation du snack-bar commence du bas vers le haut de l'écran, comme prévu, car elle était censée être au bas de la réponse de ianhanniballake.
Pour les notifications qui montent du haut, il serait probablement préférable d’obtenir une bannière personnalisée à la place.
Non, selon la conception du matériau spéc. Pour Snackbars :
Les barres de collation fournissent un retour d'information léger sur une opération en affichant un bref message en bas de l'écran.
La bibliothèque de conceptions cherchant à mettre en œuvre les spécifications de conception des matériaux, il est impossible de positionner la barre dans une position autre que le bas de l'écran (ou contenant CoordinatorLayout
).
Voici un moyen simple d’ajouter SnackBar en utilisant CoordinatorLayout en haut de l’écran, mais l’animation reste un problème.
Ajoutez simplement une mise en page CoordinatorLayout à votre mise en page, comme suit:
<Android.support.design.widget.CoordinatorLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:id="@+id/snackbarlocation">
</Android.support.design.widget.CoordinatorLayout>
puis dans votre activité, obtenez une référence et transmettez-la à la barre Snack comme ci-dessous:
CoordinatorLayout Clayout = (CoordinatorLayout)findViewById(R.id.snackbarlocation);
FabButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(Clayout, "This snack bar located at top", Snackbar.LENGTH_SHORT).show();
}
});
Eh bien, vous pouvez obtenir le layoutparam de snackbar et changer le bottomMargin dans le code ... comme.
Snackbar snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_LONG);
View view = snackbar.getView();
FrameLayout.LayoutParams para = (CoordinatorLayout) view.getLayoutParams();
params.bottomMargin = showAtLocation // pass your location offset here
view.setLayoutParams(params);
Ensuite, vous pouvez utiliser l'instance de snackbar pour montrer quand vous voulez
snackbar.show();
Cela peut être fait de manière simple
d'abord créer la mise en page où snackbar doit être inclus
<LinearLayout
Android:id="@+id/info_container"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"/>
puis en code
ll_mesg.addView(Snackbar.make(ll_mesg, "Please choose your luck from one of box", Snackbar.LENGTH_LONG)
.getView());
new Handler().postDelayed(new Runnable() {
public void run() {
ll_mesg.removeAllViews();
}
}
,1000);