1

我在CoordinatorLayout中爲InputTextLayout使用SwipeDismissBehavior。 解僱後我需要把它拿回來。 這裏是我正在努力實現這個代碼:這是工作的第一次如何使用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; 

。但是在觀點不再滑動之後。 解僱後恢復觀點的正確方法是什麼?

回答

1

我發現如何做到這一點。 在onDismiss下面的代碼是相當不錯的:

 @Override 
     public void onDismiss(View view) { 
      CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) view.getLayoutParams(); 
      params.setMargins(0, 0, 0, 0); 
      view.setLayoutParams(params); 
     } 
3

This答案由CI應用程序的工作近乎完美的我,但孩子視圖沒有再出現後,我刷卡的權利。你可以通過調用

MyChildView.setAlpha(1.0f); 

解決這個所以這個作品重置子視圖:

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

替代方式:您也可以分配一個新的SwipeDismissBehaviorCoordinatorLayout.LayoutParams重置行爲。此後,您仍然需要致電setAlpha(1.0f)