2014-12-13 2 views
5

사용자가 목록을 스크롤 할 때 도구 모음을 숨기거나 표시하려고합니다. 그것을하기 위해 번역을 사용하고 있지만 actionBar 대신 공백이 나타납니다. 나는 setVisibility (View.GONE)를 사용하는 경우, 빈 공간은 애니메이션 동안 표시하고 추한 인 끝나면 숨 ..Android Toolbar 공백 표시/숨기기

Here is a short video of my issue

을 그리고 여기 내가 구글 I에서 (내 애니메이션을 어떻게 것/O 응용 프로그램) : 여기

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()); 
    } 
} 

그리고 나의 레이아웃입니다 :

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

그리고 내 도구 모음

<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

이 문제를 해결할 수 있었습니까? – chip

답변

1

사용자가 스크롤하려고 할 때 도구 모음과 아래 조각 (함께) 모두에 대해 위로 애니메이션을 표시하면 도구 모음 만보기 밖으로 나가고 조각이 맨 위에 도달하는 것이 좋습니다. (말하자면, 200ms 이내). 당신의 ANIM 폴더에 slide_up.xml 추가

:

<?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> 

약 20 % (당신은 단지 도구 모음 뷰를 벗어나도록 변경할 수 있습니다)라고하여이 작업을 수행하려면 전체 외부 상대 레이아웃을 변환 그런 다음, 스크롤 이벤트가 트리거 될 때, 다음을 수행하십시오이 도움이

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

희망 ...

+0

이것은 여전히 ​​같은 양의 검은 색 공간을 갖지만 아래쪽에 ...! 하지만 컨테이너 (단편)에 툴바의 아래쪽을 고수하고 레이아웃을 계속 업데이트하여 툴바 아래쪽에 고정되도록하는 방법이 있습니까? –

+0

하단의 검은 색 공간을 제거하는 방법은 무엇입니까? – Ram

3

당신은 당신의 용기가 아니라 도구 모음을 애니메이션이 필요합니다.

이 시도 :

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()); 
} 
} 

그것은 나를 위해 일)

당신이 당신의 도구로 당신의 조각을 이동하려는 경우, 당신은 당신의 조각과뿐만 아니라 당신의 막대 애니메이션이 필요합니다.

+0

호출시 API 레벨 12 ... – GeneralKimi

+1

이 필요하지만 빈 공간을 위에서 아래로 이동하고 애니메이션 효과가 발생할 때 효과를 추가하여 연속적으로 튀어 나오게됩니다. – HendraWD

+0

모든 솔루션 하단의 검은 색 공간을 제거하는 방법 ? – Ram