2014-11-11 22 views
19

Chcę utworzyć niestandardowy pasek narzędzi wysokości i działa dobrze, dopóki nie dodaję do niego zawartości. Następnie moja zawartość jest dostosowywana między strzałką wsteczną a przyciskami paska akcji.Dodaj niestandardowy układ do ActionBar/Toolbar bez marginesów.

Jak zrobić, aby moje treści zajmowały całą szerokość, aby utworzyć układ, jak poniżej? Domyślam się, że ikona "+" musi być w układzie nadrzędnym paska narzędzi?

Docs powiedzieć:

Aplikacja może dodać dowolne poglądy dzieci do paska narzędzi. Pojawią się na tej pozycji w układzie. Jeśli pasek narzędzi Toolbar.LayoutParams widoku podrzędnego wskazuje wartość grawitacji CENTER_HORIZONTAL, widok będzie próbował wyśrodkować w dostępnym obszarze pozostałym na pasku narzędzi po zmierzeniu wszystkich pozostałych elementów.

Ale nie mam grawitacja ustawiony CENTER_HORIZONTAL ... Layout I want

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:iosched="http://schemas.android.com/apk/res-auto" 
     iosched:theme="@style/ActionBarThemeOverlay" 

     iosched:popupTheme="@style/ActionBarPopupThemeOverlay" 
     android:id="@+id/toolbar_actionbar" 
     android:background="@color/theme_primary" 
     iosched:titleTextAppearance="@style/ActionBar.TitleText" 
     iosched:contentInsetStart="16dp" 
     iosched:contentInsetEnd="16dp" 
     android:layout_width="match_parent" 
     android:layout_height="128dp" > 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

     ... My Content 

Obecnie mój układ kończy się tak, gdy uruchomiony z lewym marginesem ustawionym na 168:

enter image description here

+1

Nie jestem pewien, w przypadku powyżej używali niestandardowego actionbar, wydaje się, że załączony widok poniżej i to wszystko. – TheRedFox

+0

Właściwie to mój własny rysunek w Photoshopie, więc to jest prawdziwe :-) Podczas przewijania muszę przesunąć tytuł na pasek narzędzi, aby to osiągnąć, wolałbym, żeby to był element układu paska narzędzi, jeśli to możliwe ... –

+0

Rozumiem, czego potrzebujesz, ale nie trzeba mieć widoku wewnątrz paska akcji. W przeciwnym razie możesz stworzyć swój własny pasek akcji – TheRedFox

Odpowiedz

25

Nie jestem pewien, czy nadal potrzebujesz pomocy w tej sprawie, ale ma ona najwięcej głosów na pytanie bez odpowiedzi w tagu android-5.0-lollipop, ale także w tagu android-toolbar. Więc myślałem, że dam to.

Ten układ jest dość łatwy do osiągnięcia, szczególnie w przypadku nowego Design Support Library.

Realizacja

Korzeniem hierarchii będą musiały być CoordinatorLayout.

Zgodnie docs:

Dzieci o CoordinatorLayout może mieć kotwicę. Identyfikator tego widoku musi być zgodny z dowolnym potomkiem elementu CoordinatorLayout, ale może on nie być zakotwiczonym dzieckiem lub potomkiem zakotwiczonego dziecka. Można go użyć do umieszczania swobodnych widoków względem innych dowolnych tafli zawartości.

Wykorzystamy to, aby ustawić FloatingActionButton tam, gdzie musi się udać.

Reszta jest dość prosta. Zamierzamy użyć pionowego LinearLayout, aby ustawić Toolbar, kontener tekstowy, kontener tabulacji, a następnie ViewPager. Tak, pełny układ wygląda następująco:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#181E80" 
     android:orientation="vertical"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="?attr/actionBarSize" /> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="48dp" 
      android:paddingTop="8dp"> 

      <ImageView 
       android:id="@android:id/icon" 
       android:layout_width="54dp" 
       android:layout_height="54dp" 
       android:layout_alignParentStart="true" 
       android:layout_marginStart="16dp" 
       android:importantForAccessibility="no" 
       android:src="@drawable/logo" /> 

      <TextView 
       android:id="@android:id/text1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignTop="@android:id/icon" 
       android:layout_marginStart="14dp" 
       android:layout_toEndOf="@android:id/icon" 
       android:text="Chelsea" 
       android:textColor="@android:color/white" 
       android:textSize="24sp" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignStart="@android:id/text1" 
       android:layout_below="@android:id/text1" 
       android:text="England - Premier League" 
       android:textColor="@android:color/white" 
       android:textSize="12sp" /> 

     </RelativeLayout> 

     <FrameLayout 
      android:id="@+id/tab_container" 
      android:layout_width="match_parent" 
      android:layout_height="90dp" 
      android:background="#272F93"> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom" 
       app:tabContentStart="70dp" 
       app:tabGravity="center" 
       app:tabIndicatorColor="#F1514A" 
       app:tabMode="scrollable" 
       app:tabSelectedTextColor="@android:color/white" 
       app:tabTextColor="#99ffffff" /> 

     </FrameLayout> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="16dp" 
     android:src="@drawable/ic_star_white_24dp" 
     app:backgroundTint="#F1514A" 
     app:borderWidth="0dp" 
     app:elevation="8dp" 
     app:layout_anchor="@id/tab_container" 
     app:layout_anchorGravity="top|right|end" /> 

</android.support.design.widget.CoordinatorLayout> 

Tam nie dużo więcej do dodania, jedyna rzecz, ja wspomnieć jest to, jak wykorzystać TabLayout.Jeśli używasz ViewPager jak jesteśmy, chcesz zapewne nazwać jedną z dwóch:

Uwagi

właśnie rodzaj eyeballed wymiary, starając się jak najlepiej dopasować obraz.

Wyniki

results

+1

Mam to na mojej liście rzeczy do zrobienia, aby zaimplementować to z nową biblioteką projektów i wygląda na to, że mnie do tego przekonałeś. Dzięki za zaoszczędzenie mi czasu :-) –