Une partie du fragment à l'intérieur de ViewPager se coupe au bas de l'écran (Android)

J'ai défini une disposition de coordonnateur de base pour ma vue:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/white" app:tabMode="fixed"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> 

Il existe plusieurs onglets dans mon téléavertisseur d'affichage. Je publie un de mes fragments simples:

  • Équivalent de ImageView scaleType 'centerCrop' à la gravité dessinable bitmap
  • Compilez et utilisez boost pour Android NDK R10e
  • Comment désactiver Google demandant l'autorisation de vérifier régulièrement les applications installées sur mon téléphone?
  • Comment avoir une image de fond à l'écran plein (avec une récolte centrale) qui ne redimensionne pas
  • Comment obtenir le texte entré dans la barre d'action de recherche dans une chaîne?
  • Quelles sont les applications com.sec.android.provider. * Exactement?
  •  <ListView android:id="@+id/transferList" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/activity_vertical_margin" android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_alignParentRight="true" android:src="@drawable/ic_add_white" /> 

    Ce qui se passe, c'est que le FAB sort de l'écran. Ce n'est tout simplement pas le FAB, mais d'autres fragments avec des vues de carte / listes sont coupés en bas de l'écran. J'ai cherché une solution et j'ai trouvé une solution frauduleuse: Suppression de l'application de propriété: layout_scrollFlags = "scroll | enterAlways" dans la barre d'outils .

    Je ne comprends pas ce qui pourrait causer que cela se produise, et comment supprimer ce qui précède a résolu le problème. Est-ce un bug dans la bibliothèque de support? Existe-t-il un meilleur moyen de résoudre ce problème? Une autre solution que j'ai rencontrée est ici : garder le bouton FAB directement sous la forme d'un Coordinateur dans l'activité et le rendre visible uniquement dans le fragment dont vous avez besoin. Je ne me suis pas paru comme une bonne solution. De plus, d'autres points de vue dans mes fragments ont également été interrompus.

  • Pourquoi ne puis-je pas configurer du texte dans un Android TextView?
  • Comment afficher l'emplacement actuel en tant que flèche dans Google Maps Android API V2?
  • Comment vérifier par programme l'état de connexion d'un périphérique Bluetooth dans Android?
  • Convertir une chaîne en un ensemble d'octets puis revenir à la chaîne d'origine
  • Détection de NFC sur les périphériques Android
  • MediaExtractor, MediaMetadataRetriever avec Raw / Asset File
  • 3 Solutions collect form web for “Une partie du fragment à l'intérieur de ViewPager se coupe au bas de l'écran (Android)”

    C'est parce que vous utilisez CoordinatorLayout avec ListView . Vous pouvez modifier votre implémentation à RecyclerView pour obtenir un défilement correct.

    Vérifiez ma réponse ici . Cela peut vous aider.

    J'ai corrigé ce problème en modifiant l' app:layout_scrollFlags="scroll|enterAlways" la barre d' outils app:layout_scrollFlags="scroll|enterAlways" à l' app:layout_scrollFlags="enterAlways" .

    J'ai une disposition semblable à la vôtre: l'activité avec une barre d'outils disparaissant en haut et les onglets. Et l'exigence pour les fragments est d'avoir leurs propres FAB indépendants.

    Je ne pouvais pas y faire face directement dans le xml, alors je l'ai cloué de cette façon:

    Mise en page

     <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_marginBottom="20dp" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways|snap" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabContentStart="72dp" app:tabMode="scrollable" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    Disposition des fragments:

     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <include android:id="@+id/scroll" layout="@layout/content_activity_main" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right|end" android:src="@android:drawable/ic_input_add" app:borderWidth="0dp" app:fabSize="mini" app:useCompatPadding="true" /> 

    Et un peu de code pour que la FAB reste là où elle voulait être. Fragment onCreateView:

     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.fragment_tabs2, container, false); final FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.fab); final TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.tabs); final AppBarLayout appBarLayout = (AppBarLayout) getActivity().findViewById(R.id.appbar); appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { int maxAbsOffset = appBarLayout.getMeasuredHeight() - tabLayout.getMeasuredHeight(); fab.setTranslationY(-maxAbsOffset - verticalOffset); } }); return rootView; } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.