Я видел панель приложений с расширенными высотами в советах Google App Bar. Как реализовать их в Android Lollipop?
Я видел панель приложений с расширенными высотами в советах Google App Bar. Как реализовать их в Android Lollipop?
Чтобы достичь этого, вам нужно использовать новый виджет Toolbar. Панель инструментов имеет специальную обработку для минимальной высоты, чтобы объявить объем пространства, который используется для кнопок (и действий).
В приведенном ниже примере мы устанавливаем высоту 128dp (это 56dp + 72dp, как определено в спецификации), но сохраняя android:minHeight
в качестве стандартного actionBarSize
(обычно 56dp). Это означает, что кнопки и действия ограничены позиционированием по вертикали в верхнем 56dp. Затем мы можем использовать 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
вместо этого и используйте его атрибуты.
Спасибо за ваш вопрос, его ответ и, более того, за реализацию панели инструментов в native и supportlibrary:)
И мы можем играть больше. Мы можем во время выполнения играть с высотой и минимальным весом.
Высота - высота ToolBar, она проста, каждое тело понимает, и сила тяжести действует в соответствии с этой высотой.
Минимальная высота более сложная и не должна быть не менее 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);
При этом вы получаете:
но если вы оставите анимацию, вы получите:
Вот почему настройка вашего андроида панели инструментов: layout_height для wrap_content - хороший вариант в большинстве случаев, потому что панель инструментов будет адаптировать ее высоту в соответствии с ее содержимым (и вы можете изменить содержимое во время выполнения:)
И это также то, как вы меняете размер панели инструментов во время выполнения.
Спасибо Chris Banes за потрясающую работу, которую вы сделали на панели действий.