0

지난 몇 년간 필자는 작업 한 적이있는 스누커가 표시 될 때 FloatingButton이 만드는 애니메이션을 모방 한 버튼에 대한 사용자 정의 레이아웃 동작을 항상 가지고있었습니다. 내가 사용한 코드는 다음과 같습니다.맞춤 라이브러리가있는 사용자 정의 레이아웃 지원 라이브러리로 업데이트 할 때의 동작 24

public class BehaviorButton extends CoordinatorLayout.Behavior<Button> { 

    public BehaviorButton(Context context, AttributeSet attrs) {} 

    @Override 
    public boolean layoutDependsOn(CoordinatorLayout parent, Button child, View dependency) { 
     return dependency instanceof Snackbar.SnackbarLayout; 
    } 

    @Override 
    public boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) { 
     float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); 
     child.setTranslationY(translationY); 
     return true; 
    } 
} 

그리고이 클래스를 xml을 통해 Button에 "바인딩"합니다.

app:layout_behavior=".BehaviorButton" 

특별한 것은 없습니다. 문제 : 지원 라이브러리를 23.4.0에서 24로 업데이트했을 때이 기능이 사라졌습니다. 내 질문 : 지원 라이브러리 24에서 이러한 동작을 어떻게 구현해야합니까?

다음 GIF에서 Correct behavior with 23.4.0

NO 버튼이없는 방법 당신이 볼 수. layout_behavior을 추가하면 해당 위치가 "손실"됩니다. 종속성이 SnackbarLayout입니다 만 다음 버튼을 번역 할 경우

Button disappear!!

답변

1

당신은 확인해야합니다.

@Override 
    public boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) { 
     if(dependency instanceof Snackbar.SnackbarLayout){ 
     float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); 
     child.setTranslationY(translationY); 
     return true; 
     } 
     return false; 
    } 
관련 문제