嗨,我是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>
答案 0 :(得分:0)
使用自定义布局行为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
<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" />