繁体   English   中英

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

[英]Android Makes Floating Action Menu in FIXED position

嗨,我是Android开发人员中的新手。

我设置以下代码:

listView.setNestedScrollingEnabled(true);

在滚动listView时隐藏顶部的工具栏。 但是,将移动所有子视图,包括“浮动操作菜单”。

我希望浮动操作菜单保持空闲状态,固定在该位置,并且不受NestedScrollingEnabled行为的影响。 显然,它会影响父视图。

在此处输入图片说明

有什么解决办法吗? 谢谢。

我的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>

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

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