El trabajo de CollapsingTolbar con fagment contiene SwipeRefreshLayout y RecycleView
Hola estoy trabajando en CollapsingToobar
y un Framelayout
. Un Fragment
reemplazará FrameLayout
cuando hay transaction
. Un fragment
contiene SwipeRefreshLayout
y una RecycleView
dentro. Pero siempre que pongo el swipeRefreshLayout
, RecycleView
no aparece (funciona normalmente sin SwipeRefreshLayout
).
Aquí está mi xml para la actividad activity_topstory_detail
- ¿Hay alguna forma de habilitar las barras de desplazamiento para RecyclerView en código?
- Agregue RecyclerView (RecyclerFragment) a un cuadro de diálogo
- Cómo inhabilitar el dibujo de la decoración del artículo de RecyclerView para la duración de las animaciones del artículo
- Horizontalmente en RecyclerView (con GridLayoutManager)
- Multiline EditText en los problemas de desplazamiento de RecyclerView
<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true" tools:context=".TopStoryDetailActivity" tools:ignore="MergeRootFrame"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="@dimen/app_bar_height" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="false" app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:contentScrim="?attr/colorPrimary" app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:toolbarId="@+id/toolbar"> <android.support.v7.widget.Toolbar android:id="@+id/detail_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="parallax" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/topStory_detail_nested_scrollview" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:id="@+id/topStory_detail_container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>
Mi diseño para el fragmento TopStoryDetailFragment
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/topStory_detail" style="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:textIsSelectable="true" tools:context=".TopStoryDetailFragment"> <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <include layout="@layout/comment_list" /> </RelativeLayout>
Y mi archivo de presentación de comment_list
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" style="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:id="@+id/swipeContainer" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v7.widget.RecyclerView android:id="@+id/comment_list" android:layout_width="match_parent" android:layout_height="match_parent" tools:listitem="@layout/comment_list_content"/> </android.support.v4.widget.SwipeRefreshLayout> </RelativeLayout>
¿Alguna manera de hacer que SwipeRefreshLayout
, RecycleView
y CollapsingToolbar
trabajen juntos? Cualquier ayuda es mucho apreciar. Gracias
- Cómo decorar selectivamente los elementos de RecyclerView
- Deshabilitar haga clic en RecyclerView dentro de un SwipeRefreshLayout
- ¿Qué es la contraparte de RecyclerView.Adapter de ListView.Adpater.isEnabled ()
- Disposición de Android: Recyclerview horizontal dentro de una Recyclerview vertical dentro de un Viewpager con comportamientos de desplazamiento
- Configuración de la aplicación: layout_behavior mediante programación
- ¿Cómo desplazar horizontalmente RecyclerView de forma programática?
- Android: Control Desplazamiento suave sobre la vista del reciclador
- ¿Cómo guardar y restaurar la posición exacta de desplazamiento de RecyclerView?
Para una aplicación en la que estoy actualmente trabajando, tengo un Diseño Trabajando con SwipeRefreshLayout, RecyclerView y CollpasingToolbar.
Este es el diseño principal
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/coordinator"> <include layout="@layout/toolbar"/> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipeContainer" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v7.widget.RecyclerView android:id="@+id/appList" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout> </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:itemIconTint="#2196f3" app:itemTextColor="#009688" app:headerLayout="@layout/header" app:menu="@menu/drawer" /> </android.support.v4.widget.DrawerLayout>
Este es el diseño de la barra de herramientas de Collapsing:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/MyAppbar" android:layout_width="match_parent" android:layout_height="256dp" android:fitsSystemWindows="true" app:theme="@style/ThemeOverlay.AppCompat.Dark" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" > <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapse_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/material_deep_teal_500" android:fitsSystemWindows="true" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center_vertical" android:adjustViewBounds="true" android:transitionName="@string/transition_app_icon" android:fitsSystemWindows="true"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout>
Tal vez ayude
Creo que puedes usar SwipeRefreshLayout, RecycleView y CollapsingToolbar. Miro en su código, el problema es que está utilizando NestedScrollView con recyclerview. Sólo tienes que quitar el NestedScrollview
Para cualquiera que necesite fragmento para trabajar con la barra de herramientas de Collapsing, SwipeRefreshLayout, RecycleView. Me encuentro una manera que puso SwipeRefreshLayout en la actividad principal, un nestedScrollView dentro, un FrameLayout dentro de ScrollView anidado. En el fragmento OnCreatedView, llame a la actividad swipeRefreshLayout. No sé si es un buen enfoque pero funciona
Mi distribución de actividades:
<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true" tools:context=".TopStoryDetailActivity" tools:ignore="MergeRootFrame"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="@dimen/app_bar_height" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:contentScrim="?attr/colorPrimary" app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:toolbarId="@+id/toolbar"> <android.support.v7.widget.Toolbar android:id="@+id/detail_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:id="@+id/swipeContainer" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.widget.NestedScrollView android:id="@+id/topStory_detail_nested_scrollview" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <FrameLayout android:id="@+id/topStory_detail_container" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </android.support.v4.widget.NestedScrollView> </android.support.v4.widget.SwipeRefreshLayout> </android.support.design.widget.CoordinatorLayout>
Mi diseño del fragmento
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/topStory_detail" style="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" android:textIsSelectable="true" tools:context=".TopStoryDetailFragment"> <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <include layout="@layout/comment_list" />
Mi diseño de la lista de comentarios
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" style="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/comment_list" android:layout_width="match_parent" android:layout_height="match_parent" tools:listitem="@layout/comment_list_content"/> </RelativeLayout>
Llamo el swipeRefreshLayout por
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.topstory_detail, container, false); // Lookup the swipe container view swipeContainer = (SwipeRefreshLayout) getActivity().findViewById(R.id.swipeContainer);
- Problema de instalación de Android: ignorando el filtro de paquete desconocido 'platform-tools'
- Preferencias de Eclipse muestra la pestaña de Android dos veces