Ho un'attività che consiste in una barra degli strumenti e un cercapersone vista. Essa è strutturata come segue:SwipeRefreshLayout all'interno ViewPager
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="112dp"
android:layout_gravity="bottom"
tools:context=".Rhino68PanelActivity" />
<LinearLayout
android:id="@+id/toolbarContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar" />
<include
android:id="@+id/tap_strip"
layout="@layout/tab_strip" />
</LinearLayout>
Poi caricare due frammenti nel pager vista. Ogni frammento contiene il proprio SwipeRefreshLayout
. Vi mostrerò un layout frammenti:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="12"
tools:context=".Rhino68PanelActivity$DummySectionFragment">
...
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_panel_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false" />
</LinearLayout>
Ora quando faccio funzionare l'attività sembra funzionare. Tuttavia ho notato che sto scorrendo orizzontalmente (cioè per andare alla scheda successiva). Si innesca la swipeRefreshLayout
OnRefreshListener
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mSwipeRefreshLayout.setRefreshing(true);
DoUpdate();
}
});
sto vivendo anche comportamento visivo strano quando io cerco di fare un aggiornamento. Il segno di caricamento (cerchio rotante) spesso non mostra, e a volte mostra ma rimane piccolo. Non sono sicuro che questa sia anche la causa delle due opinioni in conflitto tra loro.
C'è un modo per risolvere il problema. Non sono sicuro di come. Forse limitando lo SwipeRefreshLayout per ascoltare solo gli swip verticali?
Qualsiasi suggerimento sarà molto apprezzato.
Non ho questo problema all'interno del mio progetto, che utilizza anche una struttura simile. Puoi pubblicare un progetto di esempio che riproduce questo problema? – corsair992
Ti piacerebbe condividere il tuo layout? Sicuramente i due layout interferiranno l'uno con l'altro? Se ho appena registrato il 'SwipeRefreshLayout', si attiverà' OnRefresh() ' – Zapnologica
C'è un intervallo di inclinazione prima che uno di questi' ViewGroup' subisca l'evento di tocco, ed è determinato dal fatto che il trascinamento sia più verticale o orizzontale . Una volta che un evento touch è stato preso da un 'ViewGroup', continua a gestire l'evento senza interferenze (usando il metodo' requestDisallowInterceptTouchEvent() '). La mia app e il layout sono abbastanza complicati e anche confidenziali, sarebbe di grande aiuto se potessi pubblicare un progetto di esempio minimale con questo problema (in modo che io possa eseguirne il debug). – corsair992