解決使用BottomSheetDialog底部虛擬導航欄NavigationBar的顏色
最新版本的BottomSheetDialog狀態列發黑問題已經沒有了但是虛擬導航欄還是會發黑。
華為手機在使用BottomSheetDialog的時候底部虛擬導航欄總是黑色的看著和App整個UI不搭配
這裡可以看到底部是黑色,要想解決需要單獨為底部虛擬導航欄設定一下
@RequiresApi(api = Build.VERSION_CODES.M)
private void setWhiteNavigationBar(@NonNull Dialog dialog) {
Window window = dialog.getWindow();
if (window != null) {
DisplayMetrics metrics = new DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(metrics);
GradientDrawable dimDrawable = new GradientDrawable();
GradientDrawable navigationBarDrawable = new GradientDrawable();
navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
navigationBarDrawable.setColor(Color.WHITE);//這裡設定顏色
Drawable[] layers = {dimDrawable, navigationBarDrawable};
LayerDrawable windowBackground = new LayerDrawable(layers);
windowBackground.setLayerInsetTop(1, metrics.heightPixels);
window.setBackgroundDrawable(windowBackground);
}
}
當然整個設定方法我也是從別人那裡學的,地址如下
https://stackoverflow.com/questions/47553936/prevent-bottomsheetdialogfragment-covering-navigation-bar
上面操後就Ok了,效果如下
完整程式碼如下
//標籤選擇頁面
public class TagDataSelectFragment extends BottomSheetDialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
BottomSheetDialog dialog = new BottomSheetDialog(getActivity());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setWhiteNavigationBar(dialog);
}
return dialog;
}
@Override
public void onStart() {
super.onStart();
//獲取dialog物件
BottomSheetDialog dialog = (BottomSheetDialog) getDialog();
Window window = dialog.getWindow();
//設定Dialog背景透明
window.findViewById(R.id.design_bottom_sheet).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tag_select, container, false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@RequiresApi(api = Build.VERSION_CODES.M)
private void setWhiteNavigationBar(@NonNull Dialog dialog) {
Window window = dialog.getWindow();
if (window != null) {
DisplayMetrics metrics = new DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(metrics);
GradientDrawable dimDrawable = new GradientDrawable();
GradientDrawable navigationBarDrawable = new GradientDrawable();
navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
navigationBarDrawable.setColor(Color.WHITE);
Drawable[] layers = {dimDrawable, navigationBarDrawable};
LayerDrawable windowBackground = new LayerDrawable(layers);
windowBackground.setLayerInsetTop(1, metrics.heightPixels);
window.setBackgroundDrawable(windowBackground);
}
}
}
相關文章
- 直播app原始碼,全屏並且去掉底部虛擬導航欄APP原始碼
- 簡易的iOS導航欄顏色漸變方案iOS
- iOS 導航欄顏色透明度漸變iOS
- [譯]在底部導航欄裡使用 ProviderIDE
- Android 安卓手機及平板虛擬鍵盤遮住底部導航欄問題Android安卓
- 直播系統平臺原始碼隱藏虛擬導航欄,禁止下拉通知欄,禁止上滑出虛擬導航欄原始碼
- iOS 導航欄背景顏色完全透明及漸變iOS
- Android 使用BottomNavigationView實現底部導航欄AndroidNavigationView
- Android全面屏虛擬導航欄適配Android
- Flutter 底部導航詳解Flutter
- 定製化你的ReactNative底部導航欄React
- Flutter仿閒魚底部導航欄實現Flutter
- 設定Tabbar和NavigationBar的顏色tabBarNavigation
- Android 檢查裝置是否存在 導航欄 NavigationBarAndroidNavigation
- 直播小程式原始碼,配置tabbar底部導航欄原始碼tabBar
- weui+swiper 滑動底部導航欄切換UI
- Android 底部導航欄 (底部 Tab) 最佳實踐|掘金技術徵文Android
- weex沉浸式導航欄解決方案
- 快速實現底部導航欄及未讀訊息
- 直播軟體搭建,修改狀態列、導航條顏色及文字顏色
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- APP中,用mui做的底部導航欄,引用外部圖示APPUI
- Android BottomNavigationView,底部導航欄的簡單實現AndroidNavigationView
- iOS導航欄標題錯亂的解決方法iOS
- 【iOS開發-22】navigationBar導航欄,navigationItem建立:獲取導航欄中的基本文字和button以及各種跳躍...iOSNavigation
- 更改NavMenu 導航選單啟用時的背景顏色
- 直播系統程式碼,flutter手寫一個底部導航欄Flutter
- Android官方導航欄ActionBar使用詳解Android
- 聊天平臺原始碼,解決設定導航欄按鈕圖片變色問題原始碼
- 短視訊平臺原始碼,構建簡單的底部導航欄原始碼
- css導航欄之間有空隙怎麼解決CSS
- 僅2步實現 拜拜 漢堡導航欄效果~ 全新底部導航互動(滑動隱藏)
- 直播平臺原始碼,css移動端設定底部導航欄原始碼CSS
- 成品直播原始碼推薦,uni底部導航欄隱藏單個原始碼
- 直播網站原始碼,寫一個android底部導航欄框架網站原始碼Android框架
- 手機直播原始碼,突出底部導航欄中間按鈕的樣式原始碼
- iOS 導航欄的控制iOS
- 微信小程式從零開始開發步驟(三)底部導航欄微信小程式