我需要使用 MaterialAlertDialogBuilder
但我不明白如何根据列表项的值为颜色点着色。
我是这样实现的:
itemView.configuration_selector.setOnClickListener {
MaterialAlertDialogBuilder(itemView.context, R.style.DialogTheme)
.setTitle(getFilterName(name, itemView.context))
.setItems(filterValue.toTypedArray()) { dialog, which ->
filterSelected[name] = if (filterValue[which] == itemView.context.getString(R.string.common_select)) {
null
} else {
filterValue[which]
}
if (name == PotFilterEnum.COLOR) colorSelected = which
itemView.configuration_selector.text = filterValue[which]
click(filterValue[which])
filterPot(plantName, plantFamily)
dialog.dismiss()
}
.show()
}
<!-- MATERIAL DIALOG -->
<style name="DialogTheme" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="materialAlertDialogTitleTextStyle">@style/DialogTitleTextStyle</item>
<item name="materialAlertDialogBodyTextStyle">@style/DialogBodyTextStyle</item>
</style>
<style name="DialogTitleTextStyle" parent="MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:fontFamily">@font/montserrat_bold</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">20sp</item>
</style>
<style name="DialogBodyTextStyle" parent="MaterialAlertDialog.MaterialComponents.Body.Text">
<item name="android:textSize">16sp</item>
<item name="android:fontFamily">@font/montserrat_regular</item>
<item name="drawableLeftCompat">@drawable/item_dot</item>
<item name="drawableTint">@color/colorAccent</item>
</style>