2017-01-29 12 views
2

Я работаю BottomSheetDialogFragment.Everything совершенно, но у меня есть один problem.I не может изменить PeekHeight в моем BottomSheetDialogFragment.This моего источникИзменение PeekHeight в BottomSheetDialogFragment

public class BottomSheet3DialogFragment extends BottomSheetDialogFragment { 

private BottomSheetBehavior mBottomSheetBehavior2; 
private BottomSheetBehavior.BottomSheetCallback 
     mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { 
    @Override 
    public void onStateChanged(@NonNull View bottomSheet, int newState) { 
     if (newState == BottomSheetBehavior.STATE_HIDDEN) { 
      dismiss(); 
     } 
     mBottomSheetBehavior2= BottomSheetBehavior.from(bottomSheet); 
     if(mBottomSheetBehavior2!=null) 
      mBottomSheetBehavior2.setPeekHeight(20); 


    } 

    @Override 
    public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
    } 
}; 

@Override 
public void setupDialog(final Dialog dialog, int style) { 
    super.setupDialog(dialog, style); 
    View contentView = View.inflate(getContext(), R.layout.fragment_bottomsheet3, null); 
    dialog.setContentView(contentView); 
} 

}

mButton3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      BottomSheet3DialogFragment bottomSheetDialogFragment = new BottomSheet3DialogFragment(); 

      bottomSheetDialogFragment.show(getSupportFragmentManager(), bottomSheetDialogFragment.getTag()); 
     } 
    }); 

Возможно ли изменить PeekHeight в моем фрагменте? Если кто-нибудь знает решение, пожалуйста, помогите мне спасибо

ответ

0

После dialog.setContentView(contentView); вы должны поставить это:

dialog.setOnShowListener(new OnShowListener() { 
    @Override 
    public void onShow(DialogInterface dialog) { 
    FrameLayout bottomSheet = dialog.getWindow() 
     .findViewById(android.support.design.R.id.design_bottom_sheet); 
    CoordinatorLayout coordinatorLayout = (CoordinatorLayout) bottomSheet.getParent(); 
    BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); 
    bottomSheetBehavior.setPeekHeight(bottomSheet.getHeight()); 
    coordinatorLayout.getParent().requestLayout(); 
    } 
}); 

Этот код автоматически регулирует высоту для просмотра высоту. Если вы хотите фиксированную высоту, просто измените bottomSheet.getHeight() на все, что вы хотите.