簡體   English   中英

更新到支持庫時具有自定義布局行為的怪癖24

[英]Quirk with custom Layout Behavior when updating to Support Library 24

在我從事的最后幾個項目中,我總是對Button有一個自定義布局行為,以模仿顯示Snackbar時FloatingButton制作的動畫。 我使用的代碼是:

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中實現這種行為?

使用23.4.0糾正行為

在下面的gif中,您可以看到沒有按鈕的情況。 當我添加layout_behavior它“失去”了它的位置。

按鈕消失!

您需要檢查依賴項是否為SnackbarLayout ,然后才翻譯按鈕。

@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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM