2014-01-11 2 views
0

3 개의 ImageView (A, B 및 C)가 포함 된 RelativeLayout이 있습니다. 이들 중 하나가 클릭되면 다른 두 개는 사라지고 클릭 된 이미지는 A가있는 위치로 슬라이드됩니다. 클릭 한 이미지가 A이면 다른 두 개는 그냥 사라집니다. 이미지가 끝나면 애니메이션이 슬라이딩되고 다른 이미지 가시성 속성은 GONE으로 설정됩니다.하나의 VISIBILITY가 GONE으로 설정된보기가 겹치면 다른보기가 사라집니다.

클릭 한 이미지가 A 일 때 예상대로 정확하게 작동합니다. 그러나 클릭 한 이미지가 B 또는 C (A와 동일한 공간을 차지함) 일 때 A의 가시성을 GONE으로 설정하면 클릭 한 이미지가 사라집니다 (볼 수 없듯이).

클릭하지 않은 이미지의 표시 여부를 GONE 대신 INVISIBLE로 설정하면 아무런 문제가 없습니다. 또한 A를 클릭하면 문제가 없음을 언급해야합니다.

보기의 가시성 중 하나가 VISIBLE로 설정되고 다른 하나가 GONE으로 설정된 경우 두 개의보기가 겹치는 경우 문제가있는 것처럼 보입니다. 그런 다음 t() 중 하나를 볼 수 없습니다. 왜 이런 일이 생길까요? 가시성이있는 뷰에 의해 차지 된 공간이 VISIBLE로 다시 표시 될 때까지 화면 공간이 본질적으로 사용할 수 없게 되었습니까? 내가보기를 사라지게 설정하는 대신 제거 할 수는 있지만 확실하지는 않을 것이라고 확신합니다. 내가 사라지 길 원하면 오랫동안 그들을 다시 활성화시킬거야.

편집 : 문제는보기가 실제로 제대로 번역되지 않았 음을했다 경우 나, ObjectAnimator을 사용하는 애니메이션 코드를 변경 한
. 문제를 해결하지 못했지만 다른보기의 표시 여부를 GONE으로 설정하면 변환 된보기가 계속 사라집니다. 가시성을 GONE (예 : rootLayout.removeView (view) 사용)으로 설정하는 대신 다른보기를 삭제하더라도 실제로 문제가 지속됩니다.

<RelativeLayout 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" 
    tools:ignore="ContentDescription,PxUsage"> 

    <ImageView 
     android:id="@+id/image_A" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="image_spacing" 
     android:layout_width="@dimen/image_width" 
     android:layout_height="@dimen/image_height" /> 

    <ImageView 
     android:id="@+id/image_B" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="@dimen/image_spacing" 
     android:layout_toRightOf="@id/image_A" 
     android:layout_width="@dimen/image_width" 
     android:layout_height="@dimen/image_height" /> 

    <ImageView 
     android:id="@+id/image_C" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="@dimen/image_spacing" 
     android:layout_toRightOf="@id/image_B" 
     android:layout_width="@dimen/image_width" 
     android:layout_height="@dimen/image_height" /> 

</RelativeLayout> 

... 그리고 몇 가지 코드 :

image.animate() 
    .translationXBy(slideDistance) 
    .setDuration(slideDuration) 
    .setListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      for (int i=0; i<rootLayout.getChildCount(); i++) { 
       if (i == selectedImage) continue; 
       rootLayout.getChildAt(i).setVisibility(View.GONE); 
      } 
     } 
    }); 
+0

아직 해결 방법을 찾지 못했지만 해결 방법은 보이지 않는보기의 표시 여부를 숨김으로 설정하는 것입니다. 이상적은 아니지만 필요한 것을 해줍니다. – RTF

답변

0

문제는 android:layout_toRightOf 레이아웃 속성을 함께

다음은 레이아웃 XML입니다. 대상보기가 사라지면 레이아웃 규칙은 실제로보기를 배치 할 위치를 알 수 없습니다.

layout_alignWithParentIfMissing="true"으로 시도하면 다른 레이아웃 규칙의 대상보기가없는 경우보기가 부모 상대 레이아웃과 정렬됩니다.

INVISIBLE으로 원하는 방식으로 작동하는 경우 해당 항목으로 이동할 수도 있습니다.

+0

각 이미지에 alignWithParentIfMissing = "true"를 추가했지만 차이가 없었습니다 (좋은 논리처럼 보였습니다). 슬라이딩 애니메이션이 완료되면 RelativeLayout에 몇 가지 다른 뷰를 채우기를 원하기 때문에 보이지 않는 뷰를 방해하거나 문제를 일으키지 않기를 바랍니다. 또한 레이아웃에 불필요하게 기여할 수 있습니다. – RTF

관련 문제