Hi I'm new in Android dev.
I set the below code:
listView.setNestedScrollingEnabled(true);
to hide the top toolbar when I scroll the listView. However, all child views are moved, including the Floating Action Menu.
I want the Floating Action Menu to stay idle, fixed at the position, and not influenced by the NestedScrollingEnabled behavior. Apparently it affects the parent view.
Any solution to this? Thank you.
My xml roughly looks like this (Just ignore the attached images which is abit different from the xml codes, because it is too long, but the general idea is there):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_price_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e3e3e3">
<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"
android:layout_below="@+id/buttons_selection_container">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="15dp"
android:indeterminateTint="@color/colorProgressBarPrimary"
android:indeterminateTintMode="src_atop"/>
<TextView
android:id="@+id/textView_no_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No Price Data"
android:layout_gravity="center_horizontal|center_vertical"
android:textStyle="bold"
android:textSize="18dp"
android:visibility="gone"/>
<ListView
android:id="@+id/listView_prices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="true">
</ListView>
</FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>
<com.getbase.floatingactionbutton.FloatingActionsMenu
android:id="@+id/price_fragment_float_Menu_button"
android:layout_width="322dp"
android:layout_height="376dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="46dp"
android:layout_marginRight="10dp"
fab:fab_addButtonColorNormal="@color/color_float_blue_dark"
fab:fab_addButtonColorPressed="@color/colorAccent"
fab:fab_addButtonPlusIconColor="@color/white">
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/button_switch_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fab:fab_colorNormal="@color/color_float_blue_lite"
fab:fab_colorPressed="@color/colorAccent"
fab:fab_icon="@drawable/button_different_currencies"
fab:fab_size="mini"
fab:fab_title="Switch Price"/>
</com.getbase.floatingactionbutton.FloatingActionsMenu>
</RelativeLayout>
You can hide the FAB button when the listview is scrolled using a custom layout behavior atrribute
public class ScrollingFABBehavior extends FloatingActionButton.Behavior {
private static final String TAG = "ScrollingFABBehavior";
public ScrollingFABBehavior(Context context, AttributeSet attrs) {
super();
// Log.e(TAG, "ScrollAwareFABBehavior");
}
public boolean onStartNestedScroll(CoordinatorLayout parent, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
return true;
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
if (dependency instanceof RecyclerView)
return true;
return false;
}
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View target, int dxConsumed,
int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
// TODO Auto-generated method stub
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed,
dxUnconsumed, dyUnconsumed);
//Log.e(TAG, "onNestedScroll called");
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
// Log.e(TAG, "child.hide()");
child.hide();
} else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
// Log.e(TAG, "child.show()");
child.show();
}
}}
layout xml
<android.support.design.widget.FloatingActionButton
android:id="@+id/imageViewYes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end|right"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/ic_yes"
app:backgroundTint="@color/white"
android:scaleType="center"
app:elevation="6dp"
app:fabSize="normal"
app:layout_behavior="com.your.package.ScrollingFABBehavior" />
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.