J'ai vu des barres d'applications de hauteur étendue dans les directives de la barre d'applications Google Design . Comment les implémenter dans Android Lollipop?
J'ai vu des barres d'applications de hauteur étendue dans les directives de la barre d'applications Google Design . Comment les implémenter dans Android Lollipop?
Réponses:
Vous devez utiliser le nouveau widget de la barre d'outils pour y parvenir. La barre d'outils a une gestion spéciale pour sa hauteur minimale pour déclarer la quantité d'espace qui est utilisée pour les boutons (et les actions).
Dans l'exemple ci-dessous, nous définissons la hauteur à 128dp (qui est 56dp + 72dp comme défini dans la spécification), mais en gardant le android:minHeight
comme standard actionBarSize
(qui est généralement de 56dp). Cela signifie que les boutons et les actions sont contraints d'être positionnés verticalement dans le 56dp supérieur. On peut ensuite utiliser android:gravity
pour positionner le titre en bas.
<Toolbar
android:id="@+id/toolbar"
android:layout_height="128dp"
android:layout_width="match_parent"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:gravity="bottom" />
Si vous utilisez AppCompat, modifiez la déclaration à utiliser à la android.support.v7.widget.Toolbar
place et utilisez ses attributs.
@dimen/action_bar_size_x2
, taillez la barre d'action par incréments, par exemple , et utilisez 112dp sur les téléphones, 128dp sur les tablettes
android:paddingBottom
introduit un espacement étrange lorsque buttonGravity
est défini sur bottom
. L' titleMarginBottom
attribut semble être la meilleure option ici, non?
Merci pour votre question, sa réponse, et en plus pour l'implémentation de la barre d'outils en natif et dans la supportlibrary :)
Et nous pouvons jouer plus. Nous pouvons, au moment de l'exécution, jouer avec la hauteur et la hauteur minimale.
La hauteur est la hauteur de la barre d'outils, c'est simple, tout le monde comprend, et la gravité agit en fonction de cette hauteur.
Le minimumHeight est plus délicat et ne devrait pas être au minimum de 56dp. Ce minHeight est utilisé pour placer la ligne de votre menuItem. Cette ligne est au milieu de votre minHeight.
Vous pouvez donc ajouter ce code à votre activité pour voir par vous-même la différence. :)
Runnable toolBarAnimator=new Runnable() {
@Override
public void run() {
if(postICS){
// toolbar.setTranslationX(iteration);
// toolbar.setElevation(iteration);
toolbar.setMinimumHeight(iteration * 5);
toolbar.getLayoutParams().height++;
}
uiThreadHanlder.postDelayed(this,16);
iteration++;
if(iteration>150)iteration=0;
}
};
Handler uiThreadHanlder=new Handler();
int iteration=0;
@Override
protected void onResume() {
super.onResume();
//launch the animation
uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
}
@Override
protected void onPause() {
super.onPause();
//stop the animation
uiThreadHanlder.removeCallbacks(toolBarAnimator);
}
Où se trouve la barre d'outils:
toolbar = (Toolbar) findViewById (R.id.toolbar);
En faisant cela, vous obtenez:
mais si vous quittez l'animation continuez vous obtenez:
C'est pourquoi, paramétrer votre barre d'outils android: layout_height sur wrap_content est une bonne option dans la plupart des cas, car la Toolbar adaptera sa hauteur en fonction de son contenu (et vous pourrez changer le contenu à l'exécution :)
Et c'est également ainsi que vous modifiez la taille de votre barre d'outils au moment de l'exécution.
Merci Chris Banes pour le travail incroyable que vous avez fait sur la barre d'action.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
est la voie à suivre, je m'attends à ce que la solution de contournement décrite par mousson ici ne soit pas non plus une solution de contournement, mais la bonne voie à suivre? code.google.com/p/android/issues/detail?id=77874