防止用户拖动BottomSheet支持库23.2

时间:2016-02-29 20:55:19

标签: android android-support-library

我正在尝试使用底部工作表作为底部的弹出窗口。我需要删除协调器布局中的拖动功能。我可以打电话

bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);

如果我想为视图设置动画。我只是想阻止用户拖动他们的手指来拉动视图。

<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:id="@+id/coordinator_layout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true" >

    <LinearLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:behavior_hideable="true"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
        android:orientation="vertical" >

    <!-- view and stuff... -->

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout >

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

如果您想要一个从底部自动显示的视图,而无需用户拖动它,那么底部工作表就不是正确的小工具。使用ViewGroup(LinearLayout,RelativeLayout,...)并设置其translationY,使其最初处于屏幕外。如果要显示它,请将该偏移中的平移Y设置为0。

您需要做的是在屏幕底部绘制视图,然后当您为布局充气时,将其高度移出屏幕。

说出你的观点被调用&#34;查看&#34;,在充气后,你会这样做:

view.getViewTreeObserver().addOnPreDrawListener(new     ViewTreeObserver.OnPreDrawListener() {
                    @Override
                    public boolean onPreDraw() {
                        view.getViewTreeObserver().removeOnPreDrawListener(this);
                        view.setTranslationY(/* get the view top Y and translate to it becomes the bottom of the screen */);
                        return false;
                    }
                });

然后,当您想要制作动画时,请执行以下操作:

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationY", /* translation value calculated above */, 0);
objectAnimator.setDuration(400);
objectAnimator.setInterpolator(new DecelerateInterpolator());
objectAnimator.start();