我正在尝试使用底部工作表作为底部的弹出窗口。我需要删除协调器布局中的拖动功能。我可以打电话
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 >
有人有任何想法吗?
答案 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();