with viewpager tablayout tab studio page example attach and android android-fragments android-viewpager android-recyclerview android-coordinatorlayout

viewpager - tabs android material design



Viewpager está siendo expulsado de la pantalla (5)

Tengo una aplicación simple con un visor que contiene 3 fragmentos. En uno de los fragmentos tengo la lista Recyclerview. Cuando se desplaza hacia abajo, la barra de herramientas se contrae y se muestra el desplazamiento hacia arriba. Mi problema es cuando la barra de herramientas se contrae y me desplazo hacia la izquierda / derecha. Lo estoy expandiendo programáticamente y empuja el viewpager hacia abajo, en lugar de solo superponerlo. Esto da como resultado un desplazamiento no agradable de las vistas de la pantalla. ¿Cómo puedo hacer que la barra de herramientas se superponga a mi viewpager en lugar de presionar hacia abajo mientras se expande? Hice una breve grabación del clic del problema

Esta es mi main_layout:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:fab="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".UI.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/appBarLayouy" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_scrollFlags="scroll|enterAlways" /> <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="@dimen/tabsHeight" style="@style/NavigationTab"/> </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"/> <include layout="@layout/content_main"/> <com.getbase.floatingactionbutton.FloatingActionsMenu android:id="@+id/floatingActionMenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" fab:fab_addButtonColorNormal="@color/blood_orange" fab:fab_addButtonColorPressed="@color/dirtyWhite" fab:fab_addButtonPlusIconColor="@color/dirtyWhite" fab:fab_addButtonSize = "normal" fab:fab_labelStyle="@style/menu_labels_style" fab:fab_labelsPosition="left" app:layout_anchor="@id/viewpager" app:layout_anchorGravity="bottom|end"> <com.getbase.floatingactionbutton.FloatingActionButton android:id="@+id/createPlanBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" fab:fab_colorNormal="@color/blood_orange" fab:fab_title="Create a plan" fab:fab_size="normal" app:fab_icon="@drawable/ic_event_white_48dp" fab:fab_colorPressed="@color/dirtyWhite"/> <com.getbase.floatingactionbutton.FloatingActionButton android:id="@+id/changeStatusBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" fab:fab_colorNormal="@color/blood_orange" fab:fab_size="normal" app:fab_icon="@drawable/ic_textsms_white_48dp" fab:fab_title="Change status" fab:fab_colorPressed="@color/dirtyWhite"/> </com.getbase.floatingactionbutton.FloatingActionsMenu> </android.support.design.widget.CoordinatorLayout>

Este es mi fragmento que contiene el diseño de la vista recicladora:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/tab_bg"> <android.support.v7.widget.RecyclerView android:id="@+id/feedCardViewList" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="true" xmlns:android="http://schemas.android.com/apk/res/android"/> </RelativeLayout>

diseño content_main:

<RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".UI.MainActivity" tools:showIn="@layout/activity_main" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </RelativeLayout>


Intenta dar Android:MarginBottom = "5dp" dentro de la etiqueta viewpager, aquí estás usando la altura de layout como "Match_Parent" para que cubra el área inferior.


Tengo el mismo problema, así que temporalmente puse un margen inferior de 55 pd android: layout_marginBottom = "55dp" y se ve bien, espero que este problema se solucione rápidamente.


Se encontró con este problema hoy. No estoy seguro de si de algún modo me falta algo e implemento el CoordinatorLayout incorrectamente, o si se trata de un error. Pero si alguien todavía tiene este problema, lo resolví programáticamente ajustando el margen del contenido debajo de la barra de herramientas según la altura de la barra de la aplicación. Aquí está:

Layout XML:

<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:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|exitUntilCollapsed"> ...collapsing toolbar content... </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"> ...content beneath toolbar... </FrameLayout> </android.support.design.widget.CoordinatorLayout>

Código (después de inflar el diseño):

AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar); CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); FrameLayout contentLayout = (FrameLayout) view.findViewById(R.id.content); appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) contentLayout.getLayoutParams(); layoutParams.setMargins(0, 0, 0, appBarLayout.getMeasuredHeight() + verticalOffset); contentLayout.requestLayout(); } });


Posible duplicado de esto

Podría intentar cambiar la app:layout_scrollFlags="scroll|enterAlways" la barra de herramientas app:layout_scrollFlags="scroll|enterAlways" de la app:layout_scrollFlags="enterAlways" .


Todo el mundo

Yo también estaba enfrentando el mismo problema.

Este problema se puede resolver fácilmente simplemente eliminando

aplicación: layout_scrollFlags = "scroll | enterAlways"

desde su código de barra de herramientas en usted xmlfile.

También me encontré con el mismo problema pero poco después de eliminar este viewpager se arregló dentro de la pantalla (no cruzó el límite de la pantalla)

este era el código predeterminado

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay">

cambiar esto a

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay">

segunda línea desde abajo.