Coordinatorlayout adjustresize not working

删除回忆录丶 提交于 2019-11-28 21:18:51

Try this


your_layout.xml

<RelativeLayout
    android:fitsSystemWindows="true" > <!-- Crucial! -->

    <android.support.design.widget.CoordinatorLayout>
        ...
        <android.support.v7.widget.RecyclerView />
        ...
    </android.support.design.widget.CoordinatorLayout>

</RelativeLayout>

AndroidManifest.xml

<activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustResize"> <!-- Crucial! -->
</activity>

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.

LOG_TAG

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

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

Hi I had the same problem and I only put

        android:windowSoftInputMode="adjustPan"

in yout manifest for the activity concerned and the keyboard moves up the view accordingly now

Abul Mujahid

adjustResize not work with

app:layout_behavior="@string/appbar_scrolling_view_behavior"

Remove this line:

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

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

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>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!