Материал Android с расширенной панелью инструментов

Я тестирую дизайн материалов и разрабатываю приложение с помощью расширенной панели инструментов. Мое приложение очень простое: основное действие расширяет ActionBarActivity, и мой макет выглядит так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".WeatherActivity"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/my_toolbar"
        android:layout_height="128dp"
        popupTheme="@style/ActionBarPopupThemeOverlay"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:text="@string/location_placeholder"
        android:textAlignment="viewStart"
        android:layout_gravity="start"
        />
</LinearLayout>

Теперь я хотел бы показать в качестве заголовка текущее местоположение. Первое, что я замечаю, это то, что в моем Android-эмуляторе (API 18) заголовок, похоже, не соответствует материальным рекомендациям относительно нижнего поля левого поля, он отображается слева и вводится вертикально внутри панели инструментов. Итак, должен ли я использовать заголовок панели инструментов (toolbar.setTitle) или что-то еще? Во-вторых, если я хочу создать что-то более сложное, например заголовок и краткое описание (как показано в руководстве по материалам в структуре макета), каким должен быть мой макет? Спасибо за вашу поддержку!


person FrancescoAzzola    schedule 22.10.2014    source источник
comment
Вы используете панель инструментов вместо панели действий или как отдельный виджет?   -  person MrEngineer13    schedule 23.10.2014
comment
Я использую панель инструментов вместо ActionBar   -  person FrancescoAzzola    schedule 23.10.2014


Ответы (1)


Хорошо, ваша активность расширяет ActionBarActivity, поэтому вы также должны убедиться, что тема для этой активности является дочерней по отношению к Theme.AppCompat.NoActionBar или Theme.AppCompat.Light.NoActionBar. Если вы не используете варианты Theme.AppCompat, вы можете добавить в свою тему следующие строки:

<item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item> 

Затем все, что вам нужно сделать, это добавить панель инструментов в макет (который, похоже, у вас уже есть):

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_toolbar"
    android:layout_height="128dp"
    popupTheme="@style/ActionBarPopupThemeOverlay"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Затем в своей деятельности установите панель инструментов в качестве панели действий через setSupportActionBar:

    Toolbar mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(mToolbar);

В этой последней части происходит все волшебство, потому что вы говорите: «Android, возьми этот виджет панели инструментов и используй его в точности так, как ты бы использовал SupportActionBar». Это означает, что если вы хотите установить заголовок/подзаголовок, все, что вам нужно сделать, это вызвать:

    getSupportActionBar().setTitle("Toolbar Title");
    getSupportActionBar().setSubtitle("Toolbar Subtitle");

Это также означает, что вы можете использовать те же обратные вызовы для создания меню на панели инструментов.

Чтобы ответить на ваши вопросы напрямую:

Итак, должен ли я использовать заголовок панели инструментов (toolbar.setTitle) или что-то еще?

На самом деле вы можете использовать либо toolbar.setTitle(), либо getSupportActionBar().setTitle()

Во-вторых, если я хочу создать что-то более сложное, например заголовок и краткое описание (как показано в руководстве по материалам в структуре макета), каким должен быть мой макет?

Панель инструментов поддерживает заголовки и субтитры, поэтому вы должны быть настроены. Я бы проверил документацию, просто чтобы увидеть, что все Панель инструментов поддерживает. Как правило, если панель действий может это сделать, панель инструментов может. Если у вас есть сумасшедшие требования, выходящие за рамки того, что поддерживается панелью инструментов, просто помните, что панель инструментов — это просто причудливая ViewGroup, поэтому вы можете добавлять виджеты/представления так же легко, как если бы это был LinearLayout.

person MrEngineer13    schedule 23.10.2014
comment
toolbar.setTitle() у меня не работал. Этот ответ помог мне: stackoverflow.com/questions/26486730/ - person milindbableshwar; 05.04.2015