Kotlin-将Kotlin方法转换为LayerDrawable的java时出现的问题
下面是从Kotlin代码函数转换而来的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();
@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};为我工作。