Ho visto estesi altezza app barra di Google nella progettazione App Bar linee guida. Come li implemento in Android Lollipop?
Ho visto estesi altezza app barra di Google nella progettazione App Bar linee guida. Come li implemento in Android Lollipop?
Risposte:
È necessario utilizzare il nuovo widget della barra degli strumenti per ottenere ciò. La barra degli strumenti ha una gestione speciale per la sua altezza minima per dichiarare la quantità di spazio utilizzata per i pulsanti (e le azioni).
Nell'esempio seguente, stiamo impostando l'altezza su 128 dpi (che è 56dp + 72dp come definito nelle specifiche), ma mantenendo android:minHeight
lo standard actionBarSize
(che di solito è 56dp). Ciò significa che i pulsanti e le azioni sono vincolati per essere posizionati verticalmente nei primi 56dp. Possiamo quindi utilizzare android:gravity
per posizionare il titolo in basso.
<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" />
Se stai usando AppCompat, modifica la dichiarazione da usare android.support.v7.widget.Toolbar
invece e usa i suoi attributi.
@dimen/action_bar_size_x2
, e utilizzare 112dp sui telefoni, 128dp sui tablet
android:paddingBottom
introduce strane spaziature quando buttonGravity
è impostato su bottom
. L' titleMarginBottom
attributo sembra l'opzione migliore qui, no?
Grazie per la tua domanda, la sua risposta e inoltre per l'implementazione della barra degli strumenti nella libreria nativa e di supporto :)
E possiamo giocare di più. Possiamo, in fase di esecuzione, giocare con Height e MinimalHeight.
L'altezza è l'altezza della ToolBar, è semplice, ogni corpo lo capisce e la gravità agisce in base a quell'altezza.
MinimalHeight è più complicato e non dovrebbe essere al minimo di 56dp. Questo minHeight viene utilizzato per posizionare la riga del menuItem. Questa linea è al centro del tuo minHeight.
Quindi puoi aggiungere questo codice alla tua attività per vedere da solo la differenza. :)
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);
}
Dove si trova la barra degli strumenti:
toolbar = (Toolbar) findViewById (R.id.toolbar);
Quando si esegue questa operazione si ottiene:
ma se esci dall'animazione continua ottieni:
Questo è il motivo per cui impostare la barra degli strumenti android: layout_height su wrap_content è una buona opzione nella maggior parte dei casi, perché la barra degli strumenti adatterà la sua altezza in base al suo contenuto (e puoi modificare il contenuto in fase di esecuzione :)
E questo è anche il modo in cui modifichi la dimensione della barra degli strumenti in fase di esecuzione.
Grazie Chris Banes per lo straordinario lavoro che hai svolto sulla barra delle azioni.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
è la strada da percorrere, mi aspetto che anche la soluzione descritta dal monsone qui non sia una soluzione alternativa, ma la strada giusta da percorrere? code.google.com/p/android/issues/detail?id=77874