Я видел расширенную высоту приложения бара в 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
и используйте его атрибуты.
layout_height
- это путь, я ожидаю, что обходной путь, описанный здесь monsoon, также не обходной путь, а правильный путь? code.google.com/p/android/issues/detail?id=77874@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;