Coordinatorlayout adjustresize不起作用

hex*_*hog 21 android android-softkeyboard adjustpan android-coordinatorlayout

我的代码(以及更多): 我有一个协调员布局如下

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapse_toolbar"
            android:layout_width="match_parent"
            android:layout_height="280dp"
            android:fitsSystemWindows="true"
            app:contentScrim="@color/transparent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <include layout="@layout/top" /> <!-- A RelativeLayout -->

            <android.support.v7.widget.Toolbar
                android:id="@+id/MyToolbar"
                android:layout_width="match_parent"
                android:layout_height="64dp"
                app:layout_collapseMode="parallax">

            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <!-- Main content here -->

    </FrameLayout>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

在框架布局中,我正在使用位于底部的编辑文本为自定义视图充气.编辑文本和自定义视图显示正常.

我在清单中定义了android:windowSoftInputMode ="adjustResize | stateHidden".

我的问题: 在点击编辑文本以调出软键盘时,它会重叠下面的内容而不是调整FrameLayout的大小.当软键盘出现时,我无法让FrameLayout调整大小.任何帮助将不胜感激

我试过的事:

  1. 更新了22.2.1的设计支持库
  2. 添加了android:layout_gravity ="fill_vertical"作为FrameLayout中的属性.

And*_*ger 13

这只是设计支持库中的另一个错误,似乎他们不打算很快修复它:

确认,但可能不会很快修复.adjustResize有一些很好的用例,但使用带有CollapsingToolbarLayout的AppBarLayout并不是其中之一.

令人不安的EditTextCoordinatorLayout,android:windowSoftInputMode="adjustResize"在开发设计支持库时没有人试图添加一个.


Mic*_*ael 12

试试这个


your_layout.xml

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

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

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustResize"> <!-- Crucial! -->
</activity>
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能适用于大多数人,但它不会让你有一个半透明的状态栏,后面有工具栏内容.相反,状态栏将是不透明的,内容将位于其下方. (9认同)

LOG*_*TAG 8

我正在使用它来解决CoordinatorLayout错误

在BottomSheetFragment中的onCreateDialog中

KeyboardUtil(getActivity(), view);
Run Code Online (Sandbox Code Playgroud)

要么

用于活动

new KeyboardUtil(this, findViewById(R.id.fragment_container));
Run Code Online (Sandbox Code Playgroud)

通过使用此Util类

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

Kotlin版本:https ://gist.github.com/agustinsivoplas/6f80233699aebebd512542503ea32682来源:Mikepenz,Agustinsivoplas


Suk*_*oft 7

我的布局

<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>
Run Code Online (Sandbox Code Playgroud)

我有同样的问题.我想通了,如果我在例如NestedScrollView或者在一个内部使用某些东西,FrameLayout我会假设它处理Scroll本身,CoordinatorLayout它不会adjustResize/表现你想要的方式.将忽略Manifest中的adjustResize | adjustPan设置.

对我来说,这很难弄清楚,因为我自己写了一些(合并的)视图,其中包含RelativeLayoutScrollViews等等.

如果我只是避免使用RelativeLayouts或除了NestedScrollView处理视图滚动之外的其他任何东西,它的行为方式,至少我想要它.

但我认为,有一个Bug CoordinatorLayout或我们都需要了解的行为,以避免这类问题......

也许这对于某些人来说很有用......

我的设置是:

  • support/design/appcompat:22.2.1
  • 不需要layout_gravity


she*_*age 6

如果您在 NestedScrollView 上使用 EditText 视图,请不要使用 CoordinatorLayout 作为根布局

<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>
Run Code Online (Sandbox Code Playgroud)