Widziałem rozszerzonych wysokość aplikacja baru w Google Projektowanie App Bar wytycznych. Jak zaimplementować je w Android Lollipop?
Widziałem rozszerzonych wysokość aplikacja baru w Google Projektowanie App Bar wytycznych. Jak zaimplementować je w Android Lollipop?
Odpowiedzi:
Aby to osiągnąć, musisz użyć nowego widżetu Toolbar . Pasek narzędzi ma specjalną obsługę dla jego minimalnej wysokości, aby zadeklarować ilość miejsca używanego na przyciski (i akcje).
W poniższym przykładzie ustawiamy wysokość na 128 dp (czyli 56 dp + 72 dp zgodnie z definicją w specyfikacji), ale zachowując android:minHeight
standard actionBarSize
(zwykle 56 dp). Oznacza to, że przyciski i akcje są ograniczone do umieszczania w pionie w górnym 56 dp. Następnie możemy użyć, android:gravity
aby umieścić tytuł na dole.
<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" />
Jeśli używasz AppCompat, zmień deklarację, która ma być używana, android.support.v7.widget.Toolbar
i użyj jej atrybutów.
@dimen/action_bar_size_x2
I używaj 112 dp na telefonach, 128 dp na tabletach
android:paddingBottom
wprowadza dziwne odstępy, gdy buttonGravity
jest ustawione na bottom
. titleMarginBottom
Atrybut wydaje się lepszą opcją tu, nie?
Dziękuję za pytanie, odpowiedź, a ponadto za implementację paska narzędzi w bibliotece natywnej i pomocniczej :)
I możemy grać więcej. W czasie wykonywania możemy bawić się parametrami Height i MinimalHeight.
Wysokość to wysokość paska narzędzi, jest prosta, każdy organizm rozumie, a grawitacja działa zgodnie z tą wysokością.
Minimalna wysokość jest trudniejsza i nie powinna wynosić minimum 56 dp. Ta minHeight jest używana do umieszczania linii twojego menuItem. Ta linia znajduje się w połowie twojego minHeight.
Możesz więc dodać ten kod do swojej aktywności, aby samemu zobaczyć różnicę. :)
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);
}
Gdzie pasek narzędzi to:
toolbar = (Pasek narzędzi) findViewById (R.id.toolbar);
W ten sposób otrzymujesz:
ale jeśli opuścisz animację kontynuuj, otrzymasz:
Dlatego ustawienie paska narzędzi android: layout_height na wrap_content jest dobrą opcją w większości przypadków, ponieważ pasek narzędzi dostosuje swoją wysokość do zawartości (i możesz zmieniać zawartość w czasie wykonywania :)
W ten sposób zmieniasz również rozmiar paska narzędzi w czasie wykonywania.
Dziękuję Chrisowi Banesowi za niesamowitą pracę, którą wykonałeś na pasku akcji.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
jest właściwą drogą, spodziewam się, że obejście opisane tutaj przez monsun również nie jest obejściem, ale właściwą drogą? code.google.com/p/android/issues/detail?id=77874