gpt4 book ai didi

android - appcompat-v7 v23.0.0 处于 ActionMode 时状态栏颜色为黑色

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:15 25 4
gpt4 key购买 nike

更新

最新的 Gmail 应用程序中存在同样的问题。我仍然不明白为什么 Google 会做出如此令人不快的 UI 更改。执着的我一看到就发疯

问题

我在 appcompat-v7 23 上遇到了这个奇怪的问题。我要描述的问题在 22 系列中没有发生

您可以获得重现此问题形式的源代码 https://github.com/devserv/t/构建完成后,您可以点击并按住列表中的项目以激活 ActionMode

问题:

当处于 ActionMode 时,appcompat 将状态栏变为黑色。如果我不使用以下内容,则不会发生这种情况

<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>

在我的 v21 风格中,但我必须使用它,因为我希望我的抽屉导航在状态栏后面查看。


我曾经使用以下方法来避免 ActionMode 开始和结束时出现黑色状态栏

 public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.appColorPrimaryDark));
}

 public void onDestroyActionMode(ActionMode actionMode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getActivity().getWindow().setStatusBarColor(getResources().getColor(android.R.color.transparent));
}

mMode = null;
}

以上代码没有创建/避免状态栏变黑,但在 v23 的 appcompat 上不能正常工作。相反,当 ActionMode 被销毁时,您会看到一个黑色的短状态栏。看起来和 ActionMode 销毁时播放的动画有关。

我曾尝试打开错误报告,但已被拒绝发表评论

Don't re-create bugs.

我错过了什么吗?

以下是正常 Action 模式的截图。

enter image description here enter image description here

最佳答案

如果只有颜色是问题,您可以更改它。仅针对固定颜色资源。

<color name="abc_input_method_navigation_guard" tools:override="true">@color/primary_dark</color>

明显的 ?colorPrimaryDark 将不起作用,即使在 API 21 上也是如此。


负责黑色状态栏背景的 View 存储在 AppCompatDelegateImplV7.mStatusGuard 中。您可以通过从您的 Activity 中调用 getDelegate() 来获取委托(delegate),并通过反射访问 mStatusGuard 字段。启动操作模式后,您可以获得对此 View 的引用并根据需要对其进行自定义。

这是在 AppCompat 24.1.1 中找到的。

关于android - appcompat-v7 v23.0.0 处于 ActionMode 时状态栏颜色为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com