MON CODE (et plus): J'ai une disposition de coordinateur comme suit
<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>
À l'intérieur de la disposition du cadre, je gonfle une vue personnalisée avec un texte d'édition qui est placé en bas. Le texte d'édition et la vue personnalisée s'affichent bien.
J'ai défini Android: windowSoftInputMode = "adjustResize | stateHidden" dans le manifeste.
MON PROBLÈME: Tout en appuyant sur le texte d'édition pour afficher le clavier logiciel, il chevauche le contenu en dessous au lieu de redimensionner le FrameLayout. Je n'arrivais tout simplement pas à redimensionner le FrameLayout lorsque le clavier virtuel se levait. toute aide serait appréciée
CHOSES QUE J'AI ESSAYÉ:
Ceci est juste un autre bug dans la bibliothèque de support de conception et il semble qu'ils ne prévoyez pas de le corriger de si tôt :
Confirmé, mais ne sera probablement pas corrigé de sitôt. adjustResize a quelques bons cas d'utilisation, mais utiliser AppBarLayout avec CollapsingToolbarLayout avec lui n'en fait pas partie.
Il est inquiétant de constater que personne n'a essayé d'ajouter un EditText
à un CoordinatorLayout
avec Android:windowSoftInputMode="adjustResize"
tout en développant le support de conception lib.
Essaye ça
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>
J'utilise ceci pour résoudre le bogue de CoordinatorLayout
dans onCreateDialog dans BottomSheetFragment
KeyboardUtil(getActivity(), view);
ou
Pour une utilisation d'activité
new KeyboardUtil(this, findViewById(R.id.fragment_container));
en utilisant cette classe Util
Version Kotlin: https://Gist.github.com/agustinsivoplas/6f80233699aebebd512542503ea32682 Crédit: Mikepenz, Agustinsivoplas
Ma mise en page
<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>
J'ai eu exactement le même problème. J'ai compris que si j'utilise quelque chose dans le p. Ex. NestedScrollView
ou dans un FrameLayout
je suppose également que gère le défilement lui-même, le CoordinatorLayout
ne adjustResize
/ne se comporte pas comme vous le souhaitez. Les paramètres adjustResize | adjustPan dans le manifeste sont ignorés.
Pour moi, c'était très difficile à comprendre, car j'ai écrit moi-même quelques vues (combinées) qui contenaient RelativeLayout
ou ScrollViews
et autres.
Si j'évite simplement d'utiliser RelativeLayouts
ou autre chose que NestedScrollView
pour gérer le défilement de la vue, cela se comporte de la même façon, du moins je le voulais.
Mais je pense qu'il y a un bug dans CoordinatorLayout
ou un comportement que nous devons tous mieux comprendre pour éviter ce type de problèmes ...
Peut-être que c'est utile de savoir pour quelqu'un ...
Mes paramètres sont:
N'utilisez pas CoordinatorLayout comme disposition racine si vous utilisez des vues EditText sur votre 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>
adjustResize ne fonctionne pas avec
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Supprimez cette ligne:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Salut j'ai eu le même problème et je ne mets
Android:windowSoftInputMode="adjustPan"
dans votre manifeste pour l'activité concernée et le clavier monte la vue en conséquence maintenant
Une version abrégée de KeyboardUtil , ajoutez ceci à votre activité:
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);
}
});
Pour l'instant, je le résous en utilisant androidx.drawerlayout.widget.DrawerLayout pour envelopper:
CoordinatorLayout, AppBarLayout, CollapsingToolbarLayout, Toolbar, NestedScrollView
Ce n'est peut-être pas la meilleure idée mais ça marche pour moi;)
J'ai un échantillon dans mon projet: https://github.com/maiconpintoabreu/Kupping-Mobile/blob/master/app/src/main/res/layout/activity_event_new.xml