0

我想更改状态栏的颜色以匹配工具栏。我已经从其他答案中尝试了尽可能多的代码,但仍然无法正常工作。此代码适用于 Android 10,但不适用于 Android 11。下面的代码为我提供了一个半透明的状态栏:


class SettingDialog : AppCompatDialogFragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
    }

    override fun onResume() {
        super.onResume()
        dialog?.window?.apply {
            setLayout(MATCH_PARENT, MATCH_PARENT)
            setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) //This flag is deprecated
            statusBarColor = ContextCompat.getColor(context, R.color.primary_dark)
            val insetController = ViewCompat.getWindowInsetsController(decorView)
            insetController?.isAppearanceLightStatusBars = true
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        val v = inflater.inflate(R.layout.dialog_setting, container, false)
        ...
        return v
    }

}

我得到了什么: 状态栏颜色有半透明色

我想要的是: 状态栏颜色与工具栏颜色相同

4

1 回答 1

0

看起来问题出在昏暗的背景上。我设法通过删除昏暗的背景让它工作。


class SettingDialog : AppCompatDialogFragment() {

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        dialog?.window?.apply {
            ...
            clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
            ...
        }
    }
}
于 2022-01-28T00:47:09.453 回答