在Chrome自定义标签中更改状态栏颜色

时间:2018-02-14 02:15:54

标签: android chrome-custom-tabs

我正在使用Chrome自定义标签在我的应用中显示网页内容。显然,其中一个主要优点是能够在选项卡中更改UI颜色。但是,我需要将状态栏颜色更改为我提供的较暗版本的原色。

有没有这样做?

供参考,这是我的代码。

CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
builder.setSecondaryToolbarColor(getResources().getColor(R.color.colorPrimary));
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(url));

正如您可能猜到的,我想将状态栏颜色更改为R.color.colorPrimary而不是自动选择的颜色。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

目前,使用自定义标签时无法更改状态栏颜色。您可以自CustomTabsIntent.Builder @Override public void onStart() { super.onStart(); setStatusBarColor(R.color.colorPrimaryDark); } private void setStatusBarColor(int colorId) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(ContextCompat.getColor(this, colorId)); } private void showUrl(String url) { setStatusBarColor(R.color.colorPrimary); yourCustomTabsIntent.launchUrl(this, Uri.parse(url)); } 查看source code,查看您可以自定义的内容或查看documentation

我自己也没有尝试过,但是如果你的目标是api> = 21(Lollipop),我认为以下代码可以解决。

<script>(function() {
  var _fbq = window._fbq || (window._fbq = []);
  if (!_fbq.loaded) {
    var fbds = document.createElement('script');
    fbds.async = true;
    fbds.src = '//connect.facebook.net/en_US/fbds.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(fbds, s);
    _fbq.loaded = true;
  }
  _fbq.push(['addPixelId', "1234567890"]);
})();
window._fbq = window._fbq || [];
window._fbq.push(["track", "PixelInitialized", {}]);
</script>
<noscript><img height="1" width="1" border="0" alt="" style="display:none" src="https://www.facebook.com/tr?id=1234567890&amp;ev=NoScript" /></noscript>