Kaynağa Gözat

[공통][Bug] Action Bar 가 드래그 되던 현상 패치

hyodong.min 7 yıl önce
ebeveyn
işleme
f3e3acf1ff

+ 16 - 13
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -210,16 +210,16 @@ public class ActionBarManager {
    */
   private void setScrollable(boolean isEnabled) {
     // custom appbar scroll behavior
-    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
-    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
-    if (isEnabled) {
-      params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
-      appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
-    }
-    else {
-      params.setScrollFlags(0);
-      appBarLayoutParams.setBehavior(null);
-    }
+//    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
+//    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
+//    if (isEnabled) {
+//      params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
+//      appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
+//    }
+//    else {
+//      params.setScrollFlags(0);
+//      appBarLayoutParams.setBehavior(null);
+//    }
   }
 
   private void setContentsLayout(boolean isHidden, boolean isScrollable, boolean isTransparentBackground) {
@@ -228,6 +228,8 @@ public class ActionBarManager {
      * 2 툴바 배경 없음, 스크롤/논스크롤
      */
 
+    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
+    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
     CoordinatorLayout.LayoutParams containerLayoutParams = (CoordinatorLayout.LayoutParams) container.getLayoutParams();
     if (isHidden) {
       containerLayoutParams.setBehavior(null);
@@ -237,9 +239,7 @@ public class ActionBarManager {
     else if (isTransparentBackground) {
       if (isScrollable) {
         // todo 스크롤되는 경우에는 appbar behavior 도 수정 필요;
-        AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
         params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
-        CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
         appBarLayoutParams.setBehavior(new CustomHeaderBehavior());
 
         // todo 스크롤되는 경우에는 appbar behavior 도 수정 필요;
@@ -255,13 +255,16 @@ public class ActionBarManager {
     }
     else {
       if (isScrollable) {
-        CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
+        params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
         appBarLayoutParams.setBehavior(new CustomHeaderBehavior());
+
         containerLayoutParams.setBehavior(null);
         containerLayoutParams.topMargin = 0;
         containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
       }
       else {
+        params.setScrollFlags(0);
+        appBarLayoutParams.setBehavior(null);
         containerLayoutParams.setBehavior(null);
         containerLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
         containerLayoutParams.topMargin = ResourceUtil.getDimension(R.dimen.action_bar_height);

+ 12 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/CustomHeaderBehavior.java

@@ -3,9 +3,11 @@
  */
 package kr.co.zumo.app.lifeplus.view;
 
+import android.support.annotation.NonNull;
 import android.support.design.widget.AppBarLayout;
 import android.support.design.widget.CoordinatorLayout;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -20,6 +22,16 @@ import android.view.ViewGroup;
  * @since 2018. 10. 22.
  */
 public class CustomHeaderBehavior extends AppBarLayout.Behavior {
+
+  public CustomHeaderBehavior() {
+    setDragCallback(new DragCallback() {
+      @Override
+      public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
+        return false;
+      }
+    });
+  }
+
   @Override
   public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed, int type) {
     super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);