用于更改现有渐变可绘制文件的 startColor 和 endColor 的 Kotlin 代码:示例 GradientDrawable 文件(gradient_header.xml):
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:angle="180"
android:startColor="@color/StartColor"
android:endColor="@color/EndColor"
android:type="linear" />
<corners
android:radius="0dp"/>
以及在 XML 布局文件 (ly_custom_header.xml) 中使用它作为背景的 View(ViewGroup):
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:background="@drawable/gradient_header"
android:layout_height="80dp"
android:id="@+id/rootConstraintLayout">
1- 如果布局 XML ( 文件 : ly_custom_header ) 不在当前活动/片段上下文中,则膨胀它:
val layoutFile = View.inflate(this, R.layout.ly_custom_header, null)
* 如果视图在当前活动中,只需使用它的 id 而不是膨胀。
2- 如果您将渐变应用到 ViewwGroup 对象(ConstraintLayout、LinearLayout 等)的背景,请像这样从膨胀的 XML 访问它,例如,如果我们的布局是 ConstraintLayout :
val rootConstraintLayout= layoutFile.findViewById< ViewGroup >(R.id.root_constraintlayout_ly_custom_header)
3- 创建一个 gradientDrawable 对象并获取当前应用的 Gradient drawable :
var drawable = rootConstraintLayout.background as GradientDrawable
4-更改/设置开始和结束颜色:
drawable.colors = intArrayOf( startColor , endColor )
5-将 dawable 应用于视图(此处为 ConstraintLayout):
rootConstraintLayout.background = drawable