MY CODE(およびその他):次のようなコーディネーターレイアウトがあります
<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>
フレームレイアウトの内側で、下部に配置されたエディットテキストでカスタムビューを膨らませています。エディットテキストとカスタムビューが正しく表示されます。
マニフェストでAndroid:windowSoftInputMode = "adjustResize | stateHidden"を定義しました。
MY PROBLEM:エディットテキストをタップしてソフトキーボードを表示しているときに、FrameLayoutのサイズを変更するのではなく、下のコンテンツを重ねています。ソフトキーボードが表示されたときに、FrameLayoutのサイズを変更できませんでした。助けていただければ幸いです
私が試したもの:
これは単なる設計サポートライブラリの バグ であり、それらは すぐに修正する予定はありません :
確認済みですが、おそらくすぐには修正されません。 adjustResizeにはいくつかの良いユースケースがありますが、AppBarLayoutをCollapsingToolbarLayoutと一緒に使用することはそれらの1つではありません。
設計サポートライブラリの開発中に、Android:windowSoftInputMode="adjustResize"
を使用してEditText
をCoordinatorLayout
に追加しようとした人がいないことは憂慮すべきことです。
これを試して
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>
CoordinatorLayoutバグを解決するためにこれを使用しています
bottomSheetFragmentのonCreateDialog内
KeyboardUtil(getActivity(), view);
または
アクティビティ用
new KeyboardUtil(this, findViewById(R.id.fragment_container));
このUtilクラスを使用する
Kotlinバージョン: https://Gist.github.com/agustinsivoplas/6f80233699aebebd512542503ea32682 Credit:Mikepenz、Agustinsivoplas
マイレイアウト
<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>
私はまったく同じ問題を抱えていました。私が考えたのは、例えば、 NestedScrollView
またはFrameLayout
内では、スクロール自体を処理することも想定しますが、CoordinatorLayout
はadjustResize
/のように動作しません。マニフェスト内のadjustResize | adjustPan設定は無視されます。
RelativeLayout
またはScrollViews
などを含むいくつかの(結合された)ビューを自分で書き込んだため、これを理解するのは非常に困難でした。
ビューのスクロールを処理するためにRelativeLayouts
またはNestedScrollView
以外のものを使用しない場合、それは動作します、少なくとも私はそれを望んでいました。
しかし、私はCoordinatorLayout
内にバグがあるか、この種の問題を回避するために私たち全員がよりよく理解する必要がある動作があると思います...
多分これは誰かのために知っておくと便利です...
私の設定は:
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>
adjustResizeが機能しない
app:layout_behavior="@string/appbar_scrolling_view_behavior"
この行を削除します。
app:layout_behavior="@string/appbar_scrolling_view_behavior"
こんにちは私は同じ問題があり、私は置くだけ
Android:windowSoftInputMode="adjustPan"
関連するアクティビティのマニフェストで、キーボードはそれに応じてビューを上に移動します
KeyboardUtil からの短縮バージョン。これをアクティビティに追加します。
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);
}
});
今のところ、androidx.drawerlayout.widget.DrawerLayoutを使用してラップして解決しています:
CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar、NestedScrollView
それはおそらく最良のアイデアではありませんが、それは私のために働いています;)
プロジェクトにサンプルがあります: https://github.com/maiconpintoabreu/Kupping-Mobile/blob/master/app/src/main/res/layout/activity_event_new.xml