with the studio from fragments ejemplo con activity android android-layout android-fragments material-design android-support-library

the - navigation with fragments android



Parte del fragmento dentro de ViewPager que se corta en la parte inferior de la pantalla(Android) (5)

He definido un diseño básico de Coordinador para mi vista:

<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>

Hay varias pestañas en mi vista paginador. Estoy publicando uno de mis fragmentos simples:

<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" />

Lo que pasa es que la FAB sale de pantalla. Simplemente no es el FAB, pero otros fragmentos con vistas de cartas / listas se cortan en la parte inferior de la pantalla. Busqué una solución y encontré una solución intrincada: eliminar la aplicación de la propiedad: layout_scrollFlags = "scroll | enterAlways" de la barra de herramientas .

No puedo entender qué podría estar causando esto, y cómo eliminar el problema anterior resolvió el problema. ¿Es algún error en la biblioteca de soporte? ¿Hay una mejor manera de resolver esto? Otra solución que encontré es desde here : mantener el botón FAB directamente bajo un diseño de Coordinador en la actividad, y hacerlo visible solo en el fragmento que necesita. No me pareció una buena solución. Además, otras vistas en mis fragmentos también fueron cortadas.


Elimine el desplazamiento del atributo layout_scrollFlags de la barra de herramientas. Deberías tener algo como esto: app:layout_scrollFlags="enterAlways|enterAlwaysCollapsed"


Esto se debe a que está utilizando CoordinatorLayout con ListView . Puede cambiar su implementación a RecyclerView para lograr un desplazamiento correcto.

Revisa mi respuesta here . Esto puede ayudarte.



He solucionado este problema cambiando el atributo de la barra de herramientas app:layout_scrollFlags="scroll|enterAlways" a solo app:layout_scrollFlags="enterAlways" .


Tengo un diseño similar al tuyo: actividad con una barra de herramientas que sale de la parte superior y pestañas. Y el requisito para los fragmentos es tener sus propios FAB independientes.

No pude manejarlo directamente en el xml, entonces lo clavé de esa manera:

Diseño de la actividad

<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" />

Disposición del fragmento:

<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" />

Y un poco de código para que la FAB se quede donde debía estar. Fragmento 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; }