解決使用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原始碼
- 修改狀態列與導航欄顏色
- Android 使用BottomNavigationView實現底部導航欄AndroidNavigationView
- [譯]在底部導航欄裡使用 ProviderIDE
- 簡易的iOS導航欄顏色漸變方案iOS
- 底部導航欄懸浮效果
- 直播系統平臺原始碼隱藏虛擬導航欄,禁止下拉通知欄,禁止上滑出虛擬導航欄原始碼
- Android全面屏虛擬導航欄適配Android
- 定製化你的ReactNative底部導航欄React
- Flutter 底部導航詳解Flutter
- Flutter仿閒魚底部導航欄實現Flutter
- weex沉浸式導航欄解決方案
- 直播小程式原始碼,配置tabbar底部導航欄原始碼tabBar
- 快速實現底部導航欄及未讀訊息
- 直播軟體搭建,修改狀態列、導航條顏色及文字顏色
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- 點選導航欄使當前欄目背景變色
- 更改NavMenu 導航選單啟用時的背景顏色
- 直播系統程式碼,flutter手寫一個底部導航欄Flutter
- 直播網站原始碼,寫一個android底部導航欄框架網站原始碼Android框架
- 聊天平臺原始碼,解決設定導航欄按鈕圖片變色問題原始碼
- 短視訊平臺原始碼,構建簡單的底部導航欄原始碼
- 僅2步實現 拜拜 漢堡導航欄效果~ 全新底部導航互動(滑動隱藏)
- 成品直播原始碼推薦,uni底部導航欄隱藏單個原始碼
- 直播平臺原始碼,css移動端設定底部導航欄原始碼CSS
- 滑鼠懸浮導航欄背景和字型變色效果
- 手機直播原始碼,突出底部導航欄中間按鈕的樣式原始碼
- [譯] 如何用 Flutter 來建立一個帶有底部導航欄的應用程式Flutter
- 記一次Vue跨導航欄問題解決方案Vue
- flutter 帶未讀訊息的底部導航Flutter
- 微信小程式從零開始開發步驟(三)底部導航欄微信小程式
- Flutter 導航欄AppBarFlutterAPP
- html匯入導航欄本地檔案解決跨域問題HTML跨域
- iOS系統中導航欄的轉場解決方案與最佳實踐iOS
- vmware開啟虛擬機器就藍色畫面重啟 vmware虛擬機器藍色畫面解決方法虛擬機
- qml 導航欄TabBar 工具欄ToolBartabBar
- 小程式底部導航tabBar不顯示tabBar
- Flutter 底部導航——BottomNavigationBar | 掘金技術徵文FlutterNavigation