android xml view fragment swiperefreshlayout

android - SwipeRefreshLayout no muestra ningún indicador de actualización



xml view (4)

Tengo un SwipeRefreshLayout se usa dentro de los Fragmentos que se muestran en las actividades. Al deslizar, realiza la actualización, pero después de desplegarlo sube nuevamente y no hay indicador de progreso indeterminado (las barras de progreso animadas). Simplemente desaparece pero aún llama a Refresh () cuando termina. Aquí está mi diseño ...

Diseño de la actividad:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent"/> <ListView android:id="@+id/left_drawer" android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:dividerHeight="1px" android:background="@color/drawer_background_gray" android:clipToPadding="false"/> </android.support.v4.widget.DrawerLayout>

Diseño de fragmento:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_container" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false"/> </android.support.v4.widget.SwipeRefreshLayout> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="@dimen/empty_text_size" android:layout_gravity="center" android:gravity="center" android:paddingTop="5dp" android:paddingBottom="5dp" android:paddingLeft="15dp" android:paddingRight="15dp" android:textColor="@color/brand_green"/> <ProgressBar android:id="@android:id/progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateOnly="true" android:visibility="gone" android:layout_gravity="center"/> </FrameLayout>

Código para inicializar el diseño del Fragment :

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list, null); swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container); swipeLayout.setOnRefreshListener(this); swipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); return view; }

En general, hay un retraso de 3 a 6 segundos mientras se actualiza, lo suficiente como para notarlo mientras se mira el registro. Debería ser visible, y funcionó bien cuando utilicé la biblioteca ahora obsoleta ActionBar-PullToRefresh . Intenté hacer SwipeRefreshLayout la vista raíz del diseño de Fragment e intenté eliminar el texto vacío y la vista de progreso, y continúa sin funcionar.

Hay algunos pasos más que entrar en mi código real que no puedo revelar, ya que es una aplicación diseñada para mi empresa. Pero es solo para proporcionar una base similar a muchos fragmentos diferentes que hacen cosas similares, no debería afectar ninguna funcionalidad para esto.


Cambie swipeLayout.setColorScheme () a .setColorSchemeResources (# Your Colors Ids)


Descubrí que el problema es que mi aplicación usa UI translúcida en Android 4.4, el relleno se establece en la parte superior de la lista y en la parte inferior de la lista para que vaya debajo de la barra de acción y encima de la barra de navegación. Dado que ListView se convierte en un elemento secundario de SwipeRefreshLayout , el relleno debe configurarse en SwipeRefreshLayout lugar de ListView como lo había estado antes de cambiar a SwipeRefreshLayout .


Usé este enfoque a continuación y funcionó para mí sin soluciones, incluso Fragmentos, después de tantos intentos:

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> ** content ** </ScrollView> </android.support.v4.widget.SwipeRefreshLayout>

Biblioteca de AppCompat: com.android.support:appcompat-v7:21.0.3 .


//to enable swipeRefreshLayout.post(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(true); }}); //to disable swipeRefreshLayout.post(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(true); }}); //IF ABOVE CODE DOESN''T WORK //you might have made SwipeRefreshLayout as a root layout and it can be the source of bug //so put SwipeRefreshLayout inside any ViewGroup like RelativeLayout, LinearLayout