7

Хорошо, теперь я просматриваю несколько сообщений StackOverflow, но я все еще смущен тем, где находится этот xml для моей панели инструментов.Где я могу определить XML для виджета панели инструментов в Android 5.0?

<android.support.v7.widget.Toolbar 
android:id=”@+id/my_awesome_toolbar” 
android:layout_height=”wrap_content” 
android:layout_width=”match_parent” 
android:background=”@styles/colorPrimary” /> 

Входит ли это в мой /layout/activity_main.xml?

ответ

21

Панели инструментов является обобщением баров действий для использования в макетах приложения, теперь ответить на ваш вопрос есть две практик:

Bad практик:

Bad практика является определением панели инструментов в каждом раскладке ,

Стандартная практика:

Стандартная практика для определения макета и ссылаться на него в базовой деятельности. Вам просто нужно включить этот макет панели инструментов в любом макете, который вы хотите (используя <include>) и расширить определенную базовую активность в зависимости от вашей деятельности.

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

Пример: Google I/O 2014 андроид приложение

toolbar_actionbar_with_headerbar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:iosched="http://schemas.android.com/apk/res-auto" 
    style="@style/HeaderBar" 
    iosched:theme="@style/ActionBarThemeOverlay" 
    iosched:popupTheme="@style/ActionBarPopupThemeOverlay" 
    android:id="@+id/toolbar_actionbar" 
    iosched:titleTextAppearance="@style/ActionBar.TitleText" 
    iosched:contentInsetStart="?actionBarInsetStart" 
    android:layout_width="match_parent" 
    android:layout_height="?actionBarSize" /> 

Это расположение инструментов упоминается в деятельности настройки, как указано ниже:

activity_settings.xml

<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" 
    android:orientation="vertical" 
    tools:context=".ui.SettingsActivity"> 

    <include layout="@layout/toolbar_actionbar_with_headerbar" /> 

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 
</LinearLayout> 
+2

Полезный и очень информативный ответ. Спасибо, что помогли мне понять это! – wasimsandhu

+1

@awkwardgiraffe приветствуется и приветствует! Google I/O - лучшее приложение с открытым исходным кодом для изучения новых стилей, рекомендаций и кода. –

+0

@PareshMayani вы можете мне помочь? http://stackoverflow.com/questions/26903014/android-adt-23-0-4-is-showing-compile-with-api21android-4-xl-preview-instead –

1

Что касается меня, я обычно делаю ToolbarActivity. Затем, если вы хотите, чтобы в вашей деятельности была панель инструментов, вам нужно всего лишь YourActivity extends ToolbarActivity.

public class ToolbarActivity extends AppCompatActivity { 

    @Override 
    public void setContentView(int layoutResID) { 
     super.setContentView(R.layout.activity_toolbar); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     LayoutInflater inflater = LayoutInflater.from(this); 
     View contentView = inflater.inflate(layoutResID, null); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
     layout.addView(contentView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
    } 
} 

XML:

<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" 
    android:orientation="vertical" 
    android:id="@+id/layout" 
    tools:context=".ToolbarActivity" > 

    <android.support.v7.widget.Toolbar 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:id="@+id/toolbar" /> 

</LinearLayout>