Coordinatorlayout adjustresize not working

前端 未结 9 548
傲寒
傲寒 2020-12-08 15:32

MY CODE (and more): I have a Coordinator Layout as follows



        
相关标签:
9条回答
  • 2020-12-08 15:44

    I'm using this for solving CoordinatorLayout bug

    in onCreateDialog in BottomSheetFragment

    KeyboardUtil(getActivity(), view);
    

    or

    For Activity use

    new KeyboardUtil(this, findViewById(R.id.fragment_container));
    

    by using this Util class

    Java version: https://github.com/mikepenz/MaterialDrawer/blob/aa9136fb4f5b3a80460fe5f47213985026d20c88/library/src/main/java/com/mikepenz/materialdrawer/util/KeyboardUtil.java

    Kotlin version: https://gist.github.com/agustinsivoplas/6f80233699aebebd512542503ea32682 Credit:Mikepenz,Agustinsivoplas

    0 讨论(0)
  • 2020-12-08 15:45

    Don't use CoordinatorLayout as a root layout if you use EditText views on your NestedScrollView

    <androidx.constraintlayout.widget.ConstraintLayout
      android:fitsSystemWindows="true">
    
      <androidx.coordinatorlayout.widget.CoordinatorLayout>
        <com.google.android.material.appbar.AppBarLayout>
    
          <com.google.android.material.appbar.CollapsingToolbarLayout/>
    
        </com.google.android.material.appbar.AppBarLayout>
    
        <androidx.core.widget.NestedScrollView>
        <Editext/>
        <androidx.core.widget.NestedScrollView/>
    
      </androidx.coordinatorlayout.widget.CoordinatorLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    
    0 讨论(0)
  • 2020-12-08 15:46

    This is just another bug in the design support lib and it seems they don't plan to fix it any time soon:

    Confirmed, but probably won't be fixed any time soon. adjustResize has a few good use-cases, but using AppBarLayout with CollapsingToolbarLayout with it is not one of them.

    It's disturbing that nobody tried to add a EditText to a CoordinatorLayout with android:windowSoftInputMode="adjustResize" while developing the design support lib.

    0 讨论(0)
  • 2020-12-08 15:50

    A shortened version from KeyboardUtil, add this to your activity:

    getWindow().getDecorView().getViewTreeObserver()
            .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        public void onGlobalLayout() {
            Rect r = new Rect();
            getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
            rootView.setPadding(0, 0, 0,
                    activity.getResources().getDisplayMetrics().heightPixels - r.bottom);
        }
    });
    
    0 讨论(0)
  • 2020-12-08 15:51

    My Layout

    <android.support.design.widget.CoordinatorLayout>
    
        <android.support.design.widget.AppBarLayout>
    
            <android.support.design.widget.CollapsingToolbarLayout>
    
                <ImageView>
    
                <android.support.v7.widget.Toolbar>
    
            <android.support.design.widget.CollapsingToolbarLayout>
    
        <android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView>
    
        <android.support.design.widget.FloatingActionButton>
    
    <android.support.design.widget.CoordinatorLayout>
    

    I had the exact same problem. I figured out, that if i use something within the e.g. NestedScrollView or within a FrameLayout i would assume as well that handles the Scroll itself, the CoordinatorLayout does not adjustResize / behave the way you want. The adjustResize|adjustPan settings within the Manifest are ignored.

    For me this was very hard to figure out, because i wrote a few (combined-) Views myself that contained RelativeLayout or ScrollViews and such.

    If i just avoid using RelativeLayouts or anything else than NestedScrollView to handle the view scrolling, it behaves the way, at least i wanted it to.

    But i think, there is a Bug within CoordinatorLayout or a behaviour we all need to understand better to avoid this type of problems...

    Maybe this is useful to know for someone...

    My Settings are:

    • support/design/appcompat : 22.2.1
    • no need for layout_gravity
    0 讨论(0)
  • 2020-12-08 15:51

    adjustResize not work with

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

    Remove this line:

    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    
    0 讨论(0)
提交回复
热议问题