Как мне объявить панель инструментов / панель действий с увеличенной высотой на Android Lollipop?

Я видел панель приложений с увеличенной высотой в правилах панели приложений Google Design. Как мне реализовать их в Android Lollipop?

2 ответа

Решение

Вам нужно использовать новый виджет панели инструментов для достижения этой цели. Панель инструментов имеет специальную обработку для ее минимальной высоты, чтобы объявить количество пространства, которое используется для кнопок (и действий).

В приведенном ниже примере мы устанавливаем высоту 128dp (что составляет 56dp + 72dp, как определено в спецификации), но сохраняя android:minHeight как стандарт actionBarSize (который обычно составляет 56 дп). Это означает, что кнопки и действия должны быть расположены вертикально в верхней части 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 вместо этого и использовать его атрибуты.

Спасибо за ваш вопрос, его ответ, а тем более за реализацию панели инструментов в нативной и технической поддержке:)

И мы можем играть больше. Мы можем во время выполнения поиграть с высотой и минимальной высотой.

Высота - это высота панели инструментов, она проста, каждое тело понимает, а гравитация действует в соответствии с этой высотой.

Минимальная высота более хитрая и не должна быть как минимум 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 является хорошим вариантом в большинстве случаев, потому что панель инструментов адаптирует свою высоту в соответствии с ее содержимым (и вы можете изменять содержимое во время выполнения:)

И это также, как вы меняете размер панели инструментов во время выполнения.

Спасибо Крису Бейнсу за потрясающую работу, которую вы проделали на панели действий.

Другие вопросы по тегам