【问题标题】:Android - Change status bar color on pre-lollipop devices programaticallyAndroid - 以编程方式更改棒棒糖前设备上的状态栏颜色
【发布时间】:2016-02-10 05:29:12
【问题描述】:

我想以编程方式更改棒棒糖前设备上的状态栏颜色。我很清楚材料设计 colouPrimaryDark 不会在棒棒糖之前工作,因为状态栏颜色是操作系统本身的问题,棒棒糖之前的设备不会提供这样的功能。所以我想通过java文件以编程方式完成它。这可能吗?

目前我正在使用这个材料设计代码。

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base">
    <!-- Customize your theme here. -->
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primaryColor</item>
    <item name="colorAccent">@color/primaryColor</item>
</style>

因为这不适用于低于 21 的 API。所以我想通过 java 来做。

【问题讨论】:

  • 我认为这不可能。
  • 市场上可能有很多应用程序可以做到这一点......例如whatsapp
  • @Yash Singh:我有预棒棒糖设备,Whats 应用程序状态栏颜色为黑色。
  • 谢谢各位,也许我错了,在棒棒糖之前是不可能的。

标签: android material-design statusbar


【解决方案1】:

实际上,我们可以在 + KitKat 上使用它。

查看此链接: http://developer.android.com/reference/android/R.attr.html#windowTranslucentStatus

只需将其添加到布局的顶部即可:

<FrameLayout
        android:id="@+id/statusbar"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:background="@color/colorPrimaryDark" />

然后使用这个:

if(Build.VERSION.SDK_INT == 19) {

            FrameLayout statusbar = (FrameLayout) findViewById(R.id.statusbar);
            statusbar.setVisibility(View.GONE);
        }

它应该适用于Kitkat,就像我说的,这也仅适用于+Kitkat

【讨论】:

  • 棉花糖上是 24dp。
  • 它适用于 API 17。但我们不能像一般状态栏那样使用“向下滚动查看通知”。我还使用了 activity.requestWindowFeature(Window.FEATURE_NO_TITLE); activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
【解决方案2】:

根本不可能由操作系统本身来管理这些事情。 pre-lollipop android 版本不会提供更改状态栏颜色的权限。

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2015-03-06
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多