13

Używam CoordinatorLayout aby uzyskać ten efekt:Dodaj ikonę z tytułem w CollapsingToolbarLayout

This is screenshot of the same app on iOS

Oto kod układ:

<?xml version="1.0" encoding="utf-8"?> 
<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:id="@+id/coordinatorRootLayout" 
    android:background="@android:color/background_light" 
    android:fitsSystemWindows="true" 
    > 


<android.support.design.widget.AppBarLayout 
      android:id="@+id/android_appbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="220dp" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:id="@+id/collapsingToolbarLayoutAndroidExample" 
       android:layout_width="match_parent" 
       android:background="#fff" 
       app:collapsedTitleGravity="left" 
       app:expandedTitleTextAppearance="@color/card_outline" 
       android:layout_height="match_parent" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed" 
       android:fitsSystemWindows="true" 
       app:expandedTitleGravity="center_horizontal" 
       app:contentScrim="?attr/colorPrimary" 
       app:statusBarScrim="?attr/colorPrimary" 
       app:expandedTitleMarginStart="32dp" 
       app:expandedTitleMarginEnd="48dp"> 

      <ImageView 
        android:id="@+id/parallax_header_imageview" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:scaleType="fitXY" 
        android:src="@drawable/orange_triangle" 
        app:layout_collapseMode="parallax" 
        app:layout_collapseParallaxMultiplier="0.8"/> 


       <ImageView 
        app:expandedTitleGravity="center_horizontal" 
        android:id="@+id/someImage" 
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:src="@drawable/circle" 
        android:layout_gravity="center_horizontal" 
        app:layout_collapseMode="parallax" 
        app:layout_collapseParallaxMultiplier="-1" 
        /> 
       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar_android" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_collapseMode="none" 
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

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


     </android.support.design.widget.AppBarLayout> 
    <android.support.v4.widget.NestedScrollView 
      android:id="@+id/nested_scroll_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fillViewport="true" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <LinearLayout 
       android:id="@+id/linear_layout_android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:padding="15dp" 
       android:background="@color/off_white" 
       android:layout_gravity="center_horizontal" 
       android:gravity="center_horizontal" 
       android:orientation="vertical"> 

       <GridView 
        android:id="@+id/gridview_parallax_header" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:columnWidth="100dp" 
        android:gravity="center" 
        android:numColumns="auto_fit" 
        android:stretchMode="columnWidth" /> 

      </LinearLayout> 

     </android.support.v4.widget.NestedScrollView> 


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

i tutaj jest to, co ja dostaję jako wyjście Jak korzystać z ikony z tekstem tytułowym?

enter image description here

+1

Sprawdź ten blog z niestandardowe zachowania http://saulmm.github.io/mastering-coordinator – SANAT

+0

tak @SANAT próbowałem to też jak już wspomniałem, ale w jaki sposób mogę umieścić ikonę z tekstem. proszę –

Odpowiedz

6

Możesz spróbować następujące

Reference for Co-Ordinator Layout

Teraz wewnątrz MainActivity.java

private void handleToolbarTitleVisibility(float percentage) { 
    if (percentage >= PERCENTAGE_TO_SHOW_TITLE_AT_TOOLBAR) { 

     if(!mIsTheTitleVisible) { 
      startAlphaAnimation(textviewTitle, ALPHA_ANIMATIONS_DURATION, View.VISIBLE); 
      toolbar.setAlpha(0.9f); 
      toolbar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.Primary))); 
      mIsTheTitleVisible = true; 
     } 
    } 
    else { 
     if (mIsTheTitleVisible) { 
      startAlphaAnimation(textviewTitle, ALPHA_ANIMATIONS_DURATION, View.INVISIBLE); 
      toolbar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent))); 
      mIsTheTitleVisible = false; 
     } 
    } 
} 

Uwaga: Przechowywać tło paski narzędzi przejrzysty gdy rozszerzony.

+0

Zrobiłem długą pracę i tak, mam to, co chciałem. –

1

Można wziąć odwołanie od tego przykład: -

android ParallaxHeaderViewPager

+0

nie, nie tego szukam. nie działa z gridview –

+0

https://github.com/saulmm/CoordinatorBehaviorExample spróbuj tego, który działa dla mnie – Pawanpreet

+0

@Pawantpreet to też nie jest. Próbowałem też tego. –

0

Może to rozwiązać problem:

można umieścić rozszerzoną tytuł gdziekolwiek chcesz za pomocą tych Atrybuty: CollapsingToolbarLayout:

app:expandedTitleGravity  default is bottom|left -or- bottom|start 
app:expandedTitleMargin 
app:expandedTitleMarginBottom 
app:expandedTitleMarginStart 
app:expandedTitleMarginEnd 

Kod układu Plik:

<android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapse_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      android:fitsSystemWindows="true"> 

      <ImageView 
       android:id="@+id/bgheader" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scaleType="centerCrop" 
       android:fitsSystemWindows="true" 
       android:background="@drawable/sunflowerpic" 
       app:layout_collapseMode="pin" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/MyToolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="parallax" /> 

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

Następnie w java plików SetTitle:

CollapsingToolbarLayout collapsingToolbar = 
       (CollapsingToolbarLayout) findViewById(R.id.collapse_toolbar); 
     collapsingToolbar.setTitle("Title"); 

dodawania ikona górnym rogu: użycie app:layout_collapseMode="pin" z ImagView. Dla np.

<ImageView 
      android:id="@+id/someImage" 
      android:layout_width="56dp" 
      android:layout_height="wrap_content" 
      android:src="@drawable/someDrawable" 
      android:padding="16dp" 
      android:layout_gravity="top|end" 
      app:layout_collapseMode="pin" 
      /> 

Odniesienie do tego linka Collapsing Toolbar Example

+0

proszę przeczytać moje pytanie poprawnie potrzebuję obrazu z tytułem. –

+0

oraz sposób dodawania małej ikony, która będzie animowana z tytułem od środka do paska narzędzi. jak widać obraz.na drugim obrazie widać obraz dodany, ale jego górna pozycja podczas przewijania chcę tylko obrazu z tytułem. –

+0

Napisałem ten kod, jeśli widzisz. czy skupiałbyś się na dodawaniu ikony? proszę –

1

Proponuję spróbować Childs and dependencies

 public boolean onDependentViewChanged(
  
     CoordinatorLayout parent, 
     CircleImageView avatar, 
     View dependency) {
  

     modifyAvatarDependingDependencyState(avatar, dependency); 
    } 

    private void modifyAvatarDependingDependencyState(
    CircleImageView avatar, View dependency) { 
     // avatar.setY(dependency.getY()); 
     // avatar.setBlahBlat(dependency.blah/blah); 
    } 

http://www.devexchanges.info/2016/03/android-tip-custom-coordinatorlayout.html

CollapsingToolbarLayout with a custom view

+0

próbowałem tego kodu, ale w tym pasku narzędzi jest w dolnej części. –

+0

zobacz moją zredagowaną odpowiedź, sugeruję, że próbuję to zrobić, i musisz zmienić na pasku narzędzi –