我在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)
。