xml上での設定ではなく、ボタンの角丸・輪郭・押下時のレイアウト変更を動的に設定する方法のメモ。
手順
xmlでボタン作成
activity_main.xml
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"/>
kotlin内でレイアウト定義
MainActivity.kt
val drawable = GradientDrawable()
//グラデーションにしたい時
//val drawable = GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, intArrayOf(Color.parseColor("#77ccff"), Color.parseColor("#88ddff")))
//ボタンの色指定
drawable.color = ColorStateList.valueOf(Color.parseColor("#99eeff"))
//ボタン押下時・通常時で色を変更したい時
//drawable.color = ColorStateList(
// arrayOf(intArrayOf(android.R.attr.state_pressed), intArrayOf()),
// intArrayOf(Color.parseColor("#88ddff"), Color.parseColor("#99eeff"))
//)
//角丸
drawable.cornerRadius = 200f
//輪郭
drawable.setStroke(6, Color.parseColor("#77ccff"))
//上記で設定したdrawableをボタン背景に設定
binding.button.background = drawable