BottomSheetDialog的簡(jiǎn)單使用
BottomSheetDialog bsd = new MyBottomSheetDialog(this);bsd.setContentView(R.layout.items);//布局為任意布局bsd.show();比較坑的地方是:
當(dāng)我們?cè)O(shè)置bottomSheetDialog點(diǎn)擊后不new,而是直接show的話,然而當(dāng)我們會(huì)bottomSheetDialog 展開(kāi)后,我們將BottomSheetDialog劃下隱藏后, 再點(diǎn)擊展示BottomSheetDialog后,會(huì)發(fā)現(xiàn)頁(yè)面只是變暗,BottomsheetDialog未展開(kāi),這是由于之前我們劃下收縮隱藏BottomSheetDialog后,bottomSheetDialogBehavior的狀態(tài)為隱藏,再次show之后,系統(tǒng)未恢復(fù)bottomSheetDialogBehavior的狀態(tài),還是隱藏,所以再次點(diǎn)擊后頁(yè)面只是變暗。(未能解決,暫時(shí)只能每次都new)
繼承BottomSheetDialog并重寫(xiě)其PRotected void onCreate(Bundle savedInstanceState)方法
Activity mActivity; public MyBottomSheetDialog(@NonNull Context context) { super(context); mActivity = (Activity) context; }protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int screenHeight = getScreenHeight(mActivity); int statusBarHeight = getStatusBarHeight(getContext()); int dialogHeight = screenHeight - statusBarHeight; getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, dialogHeight == 0 ? ViewGroup.LayoutParams.MATCH_PARENT : dialogHeight); } private static int getScreenHeight(Activity activity) { DisplayMetrics displaymetrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); return displaymetrics.heightPixels; } private static int getStatusBarHeight(Context context) { int statusBarHeight = 0; Resources res = context.getResources(); int resourceId = res.getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { statusBarHeight = res.getDimensionPixelSize(resourceId); } return statusBarHeight; }新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注