2017-03-22 14 views
1

私はAndroidのBottomSheetが新しく、使用方法の例を試してみましたが、ほとんどの例では、Viewクリックイベントを通じてBottomSheetの表示/非表示を実演しています。今のボトムシートを画面の下端から引っ張って表示するには?

I次のコードを持っている:それは、画面の下端からドラッグ/引っ張ることで、BottomSheetを表示することができます場合は今

BottomSheetBehavior mBottomSheetBehavior; 

@Override 
protected void onCreate() { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    View bottomSheet = findViewById(R.id.bottom_sheet); 
    mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); 
    mBottomSheetBehavior.setPeekHeight(0); 
    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); 
} 

が、私は知りたいのですが、状態をBottomSheetBehavior.STATE_HIDDENであり、peekHeightが0?であり、DrawerLayout?

答えて

0

私はBottomSheetBehaviorは、その機能を提供していますとは思わないが、あなたは含む活動のタッチイベントをインターセプトし、下のプルダウンが検出されるたびに下のシートを拡大することができます。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    bottomPullDetector = new GestureDetectorCompat(this, new BottomPullListener()); 
} 

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    return bottomPullDetector.onTouchEvent(ev) || super.dispatchTouchEvent(ev); 
} 


private class BottomPullListener extends GestureDetector.SimpleOnGestureListener { 
    private static final int SWIPE_THRESHOLD = 20; 
    private final int displayHeight; 
    private boolean beginningOnBottom; 

    BottomPullListener() { 
     final Point displaySize = new Point(); 
     getWindowManager().getDefaultDisplay().getSize(displaySize); 
     displayHeight = displaySize.y; 
    } 

    @Override 
    public boolean onDown(MotionEvent event) { 
     beginningOnBottom = displayHeight - event.getY() < SWIPE_THRESHOLD; 
     return beginningOnBottom; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     if (beginningOnBottom && e1.getY() > e2.getY()) { 
      cameraFragment.expandBottomSheet(); 
      return true; 
     } 
     return false; 
    } 
} 
関連する問題