【发布时间】:2019-09-21 23:46:52
【问题描述】:
我有一个可绘制的背景 xml 文件,如下所示,我将视图的半径设置为 40dp:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@color/jungleGreen"/>
<corners
android:bottomLeftRadius="40dp"
android:topLeftRadius="40dp"/>
</shape>
出于几个特定原因,我需要在 Kotlin Android 中以编程方式执行相同的操作。所以我写了一个如下的函数来做到这一点:
private fun setupGraphBackground(view: View) {
val gradientDrawable = GradientDrawable()
gradientDrawable.shape = GradientDrawable.RECTANGLE
gradientDrawable.setColor(resources.getColor(R.color.jungleGreen))
gradientDrawable.setStroke(0, null)
gradientDrawable.cornerRadii = floatArrayOf(45f, 45f, 0f, 0f, 0f, 0f, 45f, 45f)
view.background = gradientDrawable
}
基本上,我发现如果我将函数中的值设置为 45f,它可能会与 xml 文件中的 40dp 一样接近。
我的问题是,是否有任何规则可以将其转换为完全正确的数字?好像哪里都没有文档。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: android android-layout kotlin cornerradius