如何使用Ionic在Android中的主题浏览器中更改状态栏颜色?

时间:2017-11-22 06:01:15

标签: android ionic-framework cordova-plugins

我正在使用主题浏览器plugin link在我的Ionic应用程序中显示网址。

默认主题浏览器在状态栏中采用黑色,我必须更改它。我正在尝试下面的代码,但没有任何反应。

    Window window = cordova.getActivity().getWindow();

    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    {
         window.setStatusBarColor(ContextCompat.getColor(cordova.getActivity(), android.R.color.holo_green_dark));
    }

我正在Android文件中更改此代码,该文件位于此处:

https://github.com/initialxy/cordova-plugin-themeablebrowser/blob/master/src/android/ThemeableBrowser.java

2 个答案:

答案 0 :(得分:1)

似乎只是插入插件并更正高度计算错误地计算了对话框高度。状态栏将保持打开ThemeableBrowser之前的颜色:

    Display display = cordova.getActivity().getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    lp.height = size.y;

答案 1 :(得分:0)

我修改了源代码,如下所示。

package com.initialxy.cordova.themeablebrowser;

import android.os.Build;
import android.view.Window;
import android.view.WindowManager;
import androidx.core.content.ContextCompat;
import android.view.Display;
import android.graphics.Point;


public class ThemeableBrowser extends CordovaPlugin{

    public String showWebPage(final String url, final Options features) {
    
        Display display = cordova.getActivity().getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.copyFrom(dialog.getWindow().getAttributes());
        lp.width = size.x;
        lp.height = size.y;
        
        Window window = cordova.getActivity().getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        {
            window.setStatusBarColor(ContextCompat.getColor(cordova.getActivity(), android.R.color.white));
        }
        
        dialog.setContentView(main);
        dialog.show();