Kotlin-将Kotlin方法转换为LayerDrawable的java时出现的问题

Kotlin-将Kotlin方法转换为LayerDrawable的java时出现的问题,java,android,kotlin,layerdrawable,Java,Android,Kotlin,Layerdrawable,下面是从Kotlin代码函数转换而来的java函数 @RequiresApi(api = Build.VERSION_CODES.M) public void setWhiteNavigationBar(@NonNull Dialog dialog) { Window window = dialog.getWindow(); if (window != null) { DisplayMetrics metrics = new DisplayMetrics();

下面是从Kotlin代码函数转换而来的java函数

@RequiresApi(api = Build.VERSION_CODES.M)
public void setWhiteNavigationBar(@NonNull Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        DisplayMetrics metrics = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        GradientDrawable dimDrawable = new GradientDrawable();
        GradientDrawable navigationBarDrawable = new GradientDrawable();
        navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
        navigationBarDrawable.setColor(Color.WHITE);

        val layers = arrayOf<Drawable>(dimDrawable, navigationBarDrawable)

        LayerDrawable windowBackground = new LayerDrawable(layers);
        windowBackground.setLayerInsetTop(1, metrics.heightPixels);

        window.setBackgroundDrawable(windowBackground);
    }
}
@RequiresApi(api=Build.VERSION\u CODES.M)
public void setWhiteNavigationBar(@NonNull对话框){
Window=dialog.getWindow();
如果(窗口!=null){
DisplayMetrics=新的DisplayMetrics();
window.getWindowManager().getDefaultDisplay().getMetrics(度量);
GradientDrawable dimDrawable=新的GradientDrawable();
GradientDrawable navigationBarDrawable=新的GradientDrawable();
navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
navigationBarDrawable.setColor(Color.WHITE);
val layers=arrayOf(dimDrawable,navigationBarDrawable)
LayerDrawable windowBackground=新的LayerDrawable(层);
windowBackground.setlayerrinsettop(1,metrics.heightPixels);
窗.立根可拉深(窗背景);
}
}
我有麻烦在下面的那条线里面。 我很困惑,我怎么能用Java写在kotlin行下面:

val layers = arrayOf<Drawable>(dimDrawable, navigationBarDrawable)
val layers=arrayOf(可dimDrawable,navigationBarDrawable)
所以,请大家指导我们如何用java编写这行代码


谢谢。

为什么不把kotlin代码转换成java呢?我们在android studio中有选择

you can go to Tools > Kotlin > Show kotlin bytecode 
它将向您展示该类的整个java代码

以下是您的解决方案:

  public void setWhiteNavigationBar(@NonNull Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        DisplayMetrics metrics = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        GradientDrawable dimDrawable = new GradientDrawable();
        GradientDrawable navigationBarDrawable = new GradientDrawable();
        navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
        navigationBarDrawable.setColor(Color.WHITE);

        GradientDrawable [] layers =new GradientDrawable[] 
   {dimDrawable,navigationBarDrawable};

        LayerDrawable windowBackground = new LayerDrawable(layers);
        windowBackground.setLayerInsetTop(1, metrics.heightPixels);

        window.setBackgroundDrawable(windowBackground);
    }
}

为什么不把kotlin代码转换成java呢?我们在android studio中有这个选项

you can go to Tools > Kotlin > Show kotlin bytecode 
它将向您展示该类的整个java代码

以下是您的解决方案:

  public void setWhiteNavigationBar(@NonNull Dialog dialog) {
    Window window = dialog.getWindow();
    if (window != null) {
        DisplayMetrics metrics = new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        GradientDrawable dimDrawable = new GradientDrawable();
        GradientDrawable navigationBarDrawable = new GradientDrawable();
        navigationBarDrawable.setShape(GradientDrawable.RECTANGLE);
        navigationBarDrawable.setColor(Color.WHITE);

        GradientDrawable [] layers =new GradientDrawable[] 
   {dimDrawable,navigationBarDrawable};

        LayerDrawable windowBackground = new LayerDrawable(layers);
        windowBackground.setLayerInsetTop(1, metrics.heightPixels);

        window.setBackgroundDrawable(windowBackground);
    }
}

事实证明,kotlin中的
arrayOf()
是一种创建特定类型数组的方法。在您的情况下,
可绘制
。在Java中,您可以通过以下方式创建:

Drawable[] drawables = new Drawable[] {dimDrawable, navigationBarDrawable}
您可以省略
newdrawable[]
并写入:

Drawable[] drawables = {dimDrawable, navigationBarDrawable}

事实证明,kotlin中的
arrayOf()
是一种创建特定类型数组的方法。在您的情况下,
可绘制
。在Java中,您可以通过以下方式创建:

Drawable[] drawables = new Drawable[] {dimDrawable, navigationBarDrawable}
您可以省略
newdrawable[]
并写入:

Drawable[] drawables = {dimDrawable, navigationBarDrawable}

先生,在我的android studio中,它被禁用且为灰色。Drawable[]layers={dimDrawable,navigationBarDrawable};为我工作。先生,在我的android studio中它被禁用并且是灰色的。Drawable[]layers={dimDrawable,navigationBarDrawable};为我工作。