简体   繁体   English

Android将浮动操作菜单置于固定位置

[英]Android Makes Floating Action Menu in FIXED position

Hi I'm new in Android dev. 嗨,我是Android开发人员中的新手。

I set the below code: 我设置以下代码:

listView.setNestedScrollingEnabled(true);

to hide the top toolbar when I scroll the listView. 在滚动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. 我希望浮动操作菜单保持空闲状态,固定在该位置,并且不受NestedScrollingEnabled行为的影响。 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): 我的xml大致如下所示(只需忽略附加的图像,它与xml代码有点不同,因为它太长了,但是总的思路就在那里):

<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 当使用自定义布局行为滚动滚动列表视图时,可以隐藏FAB按钮

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 布局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" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM