3

我基于此存储库构建了我的第一个 TWA / PWA 应用程序。一切正常,但我无法更改状态栏的颜色。

我修改了这个文件<style>并在标签中添加了这一行:

<item name="android:statusBarColor">@color/ic_launcher_background</item>

问题是......它在应用程序的第一次初始化时运行良好......但是在第一次初始化后 500 毫秒它会启动 webview 并且 statusBarColor 再次变为白色。

知道如何解决这个问题吗?

4

3 回答 3

4

更新:支持库的最新版本 ( e849e45c90 ) 已更新,可以更轻松地更改状态栏颜色。

SVGOMG示例已更新以使用它,应用程序使其工作所需的更改可以在此拉取请求中看到。

以下部分已过时,但出于历史背景而留在这里

打开自定义选项卡意图时,可以通过自定义状态栏颜色来更改它。

这目前无法在清单中配置,主要的方法是:

  1. LauncherActivity从支持库 repo 复制到您的项目中。
  2. 将 AndroidManifest.xml 中的引用更改为您的实现副本。
  3. 通过将getCustomTabsIntent方法替换为以下代码,调整您的 LauncherActivity 代码以设置状态栏:
    protected CustomTabsIntent getCustomTabsIntent(CustomTabsSession session) {
        return new CustomTabsIntent.Builder(session)
          .setToolbarColor(Color.parseColor("#FF0000"))
          .build();
    }

上面的代码将创建一个红色状态栏。替换#FF0000为想要的颜色。

于 2019-02-14T03:41:38.180 回答
3

您应该在您声明受信任的 Web 活动(android.support.customtabs.trusted.STATUS_BAR_COLOR)的 AndroidManifest 上添加新的元数据

 <activity android:name="android.support.customtabs.trusted.LauncherActivity">
    <meta-data
        android:name="android.support.customtabs.trusted.DEFAULT_URL"
        android:value="https://your-host.com/" />
    <meta-data
        android:name="android.support.customtabs.trusted.STATUS_BAR_COLOR"
        android:resource="@color/colorPrimaryDark" />
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE"/>
        <data
            android:scheme="https"
            android:host="your-host.com"/>
    </intent-filter>
</activity>
于 2019-03-26T09:58:17.410 回答
0

尝试在 onResume() 上添加此代码

public void setStatusBarColor(int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(color);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
}
于 2019-02-14T06:57:51.520 回答