Я видел расширенную высоту приложения бара в Google Design App Bar руководстве. Как реализовать это в Android Lollipop?
Я видел расширенную высоту приложения бара в Google Design App Bar руководстве. Как реализовать это в Android Lollipop?
Ответы:
Для этого вам необходимо использовать новый виджет панели инструментов . Панель инструментов имеет специальную обработку для ее минимальной высоты, чтобы объявлять количество места, которое используется для кнопок (и действий).
В приведенном ниже примере мы устанавливаем высоту 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
и используйте его атрибуты.
@dimen/action_bar_size_x2
измените размер панели действий с шагом, например , и используйте 112dp на телефонах, 128dp на планшетах
android:paddingBottom
вводит странный интервал, когда buttonGravity
установлен на bottom
. titleMarginBottom
Атрибут кажется, лучшим вариантом здесь, нет?
Спасибо за ваш вопрос, его ответ и тем более за реализацию панели инструментов в родной и вспомогательной библиотеке :)
И мы можем играть больше. Во время выполнения мы можем поиграть с Height и MinimalHeight.
Высота - это высота ToolBar, это просто, все понимают, и сила тяжести действует в соответствии с этой высотой.
MinimalHeight более сложен и не должен быть минимум 56dp. Этот minHeight используется для размещения строки вашего menuItem. Эта линия находится в середине вашего 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
- это путь, я ожидаю, что обходной путь, описанный здесь monsoon, также не обходной путь, а правильный путь? code.google.com/p/android/issues/detail?id=77874