Riguarda il problema del coordinamento del comportamento di un pulsante di azione mobile in un'attività che contiene 5 frammenti.Implementazione diversa per un pulsante di azione mobile in ogni frammento di un'attività
Nella mia app, ho un'attività che ospita un ViewPager e un xml definito con FloatingActionButton. ViewPager contiene frammenti e all'interno di ciascun frammento c'è un RecyclerView. Facendo clic sul pulsante di azione mobile, ho implementato scrollToPosition (0). Come ho implementato Floating ActionButton nel file xml dell'attività principale, scrollToPosition() funziona solo nell'ultimo frammento facendo clic sul pulsante di azione mobile. Come faccio a superare questo in modo che facendo clic sul pulsante mobile in qualsiasi frammento la vista del riciclatore scorre verso l'alto?
Ho provato a implementare floatingactionbutton nel file di layout dei frammenti e funziona perfettamente. Ma il problema con questo è il pulsante di azione mobile che si muoverà quando faccio scorrere da un frammento ad un altro frammento. Quindi c'è un modo per poter implementare floatingactionbutton nel file xml di attività principale ed essere ancora in grado di ottenere scrollToPosotion (0) in ogni frammento facendo clic su FloatingActionButton? Molte grazie per qualsiasi suggerimento.
Il seguente è il file xml che contiene il pulsante di azione mobile.
<?xml version="1.0" encoding="utf-8"?>
<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:background="#f4f4f4"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="0dp"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" />
<com.myapp.now.extras.SlidingTabLayout
android:id="@+id/sl_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
</com.myapp.now.extras.SlidingTabLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp_tab"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<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:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginEnd="@dimen/fab_margin_right"
android:layout_marginRight="@dimen/fab_margin_right"
android:clickable="true"
android:src="@mipmap/top_scroll"
app:backgroundTint="@color/colorFAB"
app:borderWidth="0dp"
app:fabSize="normal" />
Il seguente è un file XML di un frammento
<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"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl_swipe"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_list"
android:scrollbars="vertical"
android:fadeScrollbars="true"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
<ProgressBar
android:visibility="gone"
android:layout_gravity="center"
android:id="@+id/pbar"
android:layout_width="40dp"
android:layout_height="40dp" />
che segue è l'attuazione del pulsante di azione galleggiante in ogni frammento
fab = (android.support.design.widget.FloatingActionButton) view.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager();
llm.scrollToPositionWithOffset(0, 0);
}
});
Fornire un codice per favore –
Puoi controllare la mia risposta qui: http://stackoverflow.com/a/33586571/2023280 –
@RBhagwat hai risolto questo problema? –