7

Okay, przechodzę teraz przez kilka wpisów StackOverflow, ale wciąż nie mam pojęcia, gdzie znajduje się ten xml dla mojego paska narzędzi Toolbar.Gdzie mogę zdefiniować XML dla widżetu paska narzędzi w systemie 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” /> 

Czy jest w moim /layout/activity_main.xml?

Odpowiedz

21

Toolbar jest uogólnieniem barów działania do stosowania w układach aplikacji, teraz, aby odpowiedzieć na to pytanie są dwie praktyki:

Zła praktyka:

Zła praktyka jest zdefiniowanie Toolbar w każdych layoutów .

praktyka standardowa:

Standardową praktyką jest określenie układ i odniesienie go w działalności podstawowej. Trzeba tylko uwzględnić ten układ paska narzędzi w dowolnym pożądanym układzie (przy użyciu <include>) i rozszerzyć zdefiniowaną aktywność podstawową w dowolnym działaniu.

Ta standardowa praktyka pomoże ci zachować pojedynczą podstawę kodu dla paska narzędzi Toolbar i za każdym razem zaoszczędzić czas na definiowaniu paska narzędzi Toolbar.

Przykład: Google I/O 2014 android app

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" /> 

Układ ten pasek narzędzi jest wymieniony w działalności ustawień, jak podano poniżej:

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

pomocny i bardzo pouczające odpowiedź. Dzięki za pomoc w zrozumieniu tego! – wasimsandhu

+1

@awkwardgiraffe Witamy i pozdrawiam! Google I/O to najlepsza aplikacja typu open source do eksploracji nowych stylów, zaimplementowanych wytycznych i kodu. –

+0

@PareshMayani możesz mi w tym pomóc? http://stackoverflow.com/questions/26903014/android-adt-23-0-4-is-showing-compile-with-api21android-4-xl-preview-instead –

1

Co do mnie, zazwyczaj tworzę ToolbarActivity. Następnie, jeśli chcesz, aby Twoja aktywność miała pasek narzędzi, musisz po prostu 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> 
Powiązane problemy