既存のグラデーション ドローアブル ファイルの 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 など) の背景にグラデーションを適用した場合は、レイアウトが ConstraintLayout の場合のサンプルとして、膨張した XML から次のようにアクセスします。
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