2014-12-13 7 views
5

Próbuję ukryć lub pokazać pasek narzędzi, gdy użytkownik przewija listę. Aby to zrobić, używam tłumaczenia, ale zamiast mojego paska akcji pojawia się puste miejsce. Jeśli używam setVisibility (View.GONE), puste miejsce pojawi się podczas animacji i ukrywać, kiedy to zrobić, który jest brzydki ..Pasek narzędzi Android pokaż/ukryj pustą przestrzeń

Here is a short video of my issue

A oto jak to zrobić mój animacji (z Google I/o app):

public void showToolbar(boolean show){ 
    if (show) { 
     toolbar.animate() 
       .translationY(0) 
       .alpha(1) 
       .setDuration(HEADER_HIDE_ANIM_DURATION) 
       .setInterpolator(new DecelerateInterpolator()); 
    } else { 
     toolbar.animate() 
       .translationY(-toolbar.getBottom()) 
       .alpha(0) 
       .setDuration(HEADER_HIDE_ANIM_DURATION) 
       .setInterpolator(new DecelerateInterpolator()); 
    } 
} 

I tu jest mój układ:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/mainContent"> 

<include layout="@layout/toolbar" 
    android:id="@+id/my_toolbar" /> 

<fragment 
    android:name="com.ar.oe.fragments.SectionsFragment" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?attr/actionBarSize"/> 

</RelativeLayout> 

A mój Pasek

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

Czy udało Ci się to naprawić? – chip

Odpowiedz

1

Lepiej jest pokazać animację "przesuń w górę" zarówno dla paska narzędzi, jak i poniższego fragmentu (razem), gdy użytkownik próbuje przewinąć, tak że tylko pasek narzędzi wychodzi z widoku, a fragment osiąga szczyt. (w ciągu powiedzmy 200ms). Aby to zrobić, należy przetłumaczyć cały zewnętrzny układ krewnym mówią niektórzy 20% (można zmienić tak, że tylko pasek narzędzi wychodzi z widzenia):

Dodaj slide_up.xml w folderze anim:

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
    android:fillAfter="false" 
    android:fromYDelta="0%" 
    android:toYDelta="-20%" 
    android:duration="200"/> 

</set> 

potem, gdy zdarzenie przewijania jest uruchomiony, należy wykonać następujące czynności:

... 
RelativeLayout rel = (RelativeLayout)findViewById(R.id.mainContent); 
Animation slideUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up); 
rel.startAnimation(slideUp); 
... 

Nadzieja to pomaga ...

+0

To będzie nadal mieć taką samą ilość czarnego miejsca, ale w DOLE ...! Ale czy istnieje sposób na powiedzenie kontenerowi (fragmentowi), aby przykleił się do paska narzędzi Toolbar i nadal aktualizował układ tak, aby przylegał do dołu paska narzędzi? –

+0

jakiekolwiek rozwiązanie, jak usunąć czarną przestrzeń na dole? – Ram

3

trzeba ożywić swój pojemnik i nie paska narzędzi.

Spróbuj tego:

RelativeLayout mainContent = (RelativeLayout) findById(R.id.mainContent); 

public void showToolbar(boolean show){ 
if (show) { 
    mainContent.animate() 
      .translationY(0) 
      .alpha(1) 
      .setDuration(HEADER_HIDE_ANIM_DURATION) 
      .setInterpolator(new DecelerateInterpolator()); 
} else { 
    mainContent.animate() 
      .translationY(-toolbar.getBottom()) 
      .alpha(0) 
      .setDuration(HEADER_HIDE_ANIM_DURATION) 
      .setInterpolator(new DecelerateInterpolator()); 
} 
} 

pracować dla mnie;)

Jeśli chcesz przenieść fragment z paska narzędzi, trzeba animować fragment, a nie tylko pasek.

+0

Połączenie wymaga poziomu interfejsu API 12 ... – GeneralKimi

+1

, ale spowoduje, że puste miejsce przesunie się od góry do dołu i doda efekt odbicia w górę i odbija się w sposób ciągły, jeśli trzymamy palec podczas animacji – HendraWD

+0

każde rozwiązanie, jak usunąć czarną przestrzeń u dołu ? – Ram