Я бачив панелі додатків із збільшеною висотою в інструкціях Google Design App Bar . Як застосувати їх в Android Lollipop?
Я бачив панелі додатків із збільшеною висотою в інструкціях Google Design App Bar . Як застосувати їх в Android Lollipop?
Відповіді:
Для цього потрібно скористатися новим віджетом панелі інструментів . Панель інструментів має спеціальну обробку для мінімальної висоти для оголошення кількості місця, яке використовується для кнопок (та дій).
У наведеному нижче прикладі ми встановлюємо висоту 128dp (що дорівнює 56dp + 72dp, як визначено в специфікації), але зберігаємо android:minHeight
стандартний рівень actionBarSize
(який зазвичай становить 56dp). Це означає, що кнопки та дії обмежені вертикальним розташуванням у верхній частині 56 dp. Потім ми можемо використовувати android:gravity
для розміщення заголовка внизу.
<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" />
Якщо ви використовуєте AppCompat, змініть декларацію на використання android.support.v7.widget.Toolbar
і використовуйте її атрибути.
@dimen/action_bar_size_x2
зменште розмір панелі дій із збільшенням, наприклад , і використовуйте 112dp на телефонах, 128dp на планшетах
android:paddingBottom
вводить дивні інтервали, коли buttonGravity
встановлено значення bottom
. titleMarginBottom
Атрибут здається, найкращим варіантом тут, немає?
Дякуємо за ваше запитання, відповідь на нього, а тим більше за реалізацію панелі інструментів у власній та бібліотеці підтримки :)
І ми можемо грати більше. Ми можемо, під час виконання, грати з Height та MinimalHeight.
Висота - це висота панелі інструментів, вона проста, це розуміє кожне тіло, і гравітація діє відповідно до цієї висоти.
Мінімальна висота є більш хитрою і не повинна становити мінімум 56dp. Ця minHeight використовується для розміщення рядка пункту меню. Цей рядок знаходиться в середній частині вашої minHeight.
Тож ви можете додати цей код до своєї діяльності, щоб самі побачити різницю. :)
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);
}
Де знаходиться панель інструментів:
панель інструментів = (Панель інструментів) findViewById (R.id.toolbar);
Роблячи це, ви отримуєте:
але якщо ви залишите анімацію продовжувати, ви отримаєте:
Ось чому, встановлення вашої панелі інструментів android: layout_height на wrap_content є хорошим варіантом у більшості випадків, тому що панель інструментів буде адаптувати свою висоту відповідно до її вмісту (і ви можете змінити вміст під час виконання :)
І це також, як ви змінюєте розмір панелі інструментів під час виконання.
Дякуємо Крісу Бейнсу за чудову роботу, яку ви зробили на панелі дій.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
- це шлях, я сподіваюся, що обхідний шлях, описаний тут мусоном, також не є обхідним шляхом, а правильним шляхом? code.google.com/p/android/issues/detail?id=77874