我在CoordinatorLayout中的InputTextLayout中使用SwipeDismissBehavior。
解散后,我需要找回它。
这是我尝试实现此代码的代码:

layoutDateComplete = (TextInputLayout) rootView.findViewById(R.id.layoutDateComplete);
behavior = getSwipeDismissBehavior();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) layoutDateComplete.getLayoutParams();
params.setBehavior(behavior);

private SwipeDismissBehavior<TextInputLayout> getSwipeDismissBehavior() {
SwipeDismissBehavior<TextInputLayout> behavior = new SwipeDismissBehavior();
behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_END_TO_START);
behavior.setListener(new SwipeDismissBehavior.OnDismissListener() {
    @Override
    public void onDismiss(View view) {
        ViewCompat.setX(layoutDateComplete, 0);
    }

    @Override
    public void onDragStateChanged(int state) {
    }
});
return behavior;


它是第一次工作。但是之后,视图不再滑动。
关闭后恢复视图的正确方法是什么?

最佳答案

CI Apps的This答案对我来说几乎是完美的,但是在我向右滑动后,子视图没有出现。您可以通过致电解决此问题

MyChildView.setAlpha(1.0f);


因此,这可以重置子视图:

CoordinatorLayout.LayoutParams tParams = (CoordinatorLayout.LayoutParams) tChild.getLayoutParams();
tParams.setMargins(0, 0, 0, 0);
tChild.requestLayout();
tChild.setAlpha(1.0f);


另一种方法:您还可以将新的SwipeDismissBehavior分配给CoordinatorLayout.LayoutParams以重置行为。之后,您仍然需要在子对象上调用setAlpha(1.0f)

09-27 20:54